1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo chuyên Đề môn học “cấu trúc dữ liệu và giải thuật nâng cao

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cấu Trúc Dữ Liệu Và Giải Thuật Nâng Cao
Tác giả Nguyễn Chí Đạt
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo chuyên đề
Năm xuất bản 2023-2024
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 2,24 MB

Nội dung

Kết thúc: Khi không còn sự đổi chỗ nào xảy ra trong một vòng lặp, nghĩa là dãy đã được sắp xếp và thuật toán kết thúc... CHƯƠNG 3: THUẬT TOÁN TÌM KIẾM3.1 Thuật toán Tìm kiếm Nhị phân Bi

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUYÊN ĐỀ MÔN HỌC

“Cấu trúc dữ liệu và giải thuật nâng cao”

Sinh viên thực hiện : NGUYỄN CHÍ ĐẠT

Hà Nội, tháng 7 năm 2024

Trang 2

PHIẾU CHẤM ĐIỂM

Các sinh viên thực hiện:

Mã số sinh viên

Điểm Chữ ký của sinh viên

1

Giảng viên chấm:

1

2

MỤC LỤ

C

Trang 3

1

MỤC LỤC ẢNH 1

DANH MỤC TỪ VIẾT TẮT 4

LI M ĐU 5

CHƯƠNG 1 THUẬT TOÁN ĐỆ QUY 6

1.1 T$ng quan v+ đệ quy 6

1.1.1 Kh1i niệm 6

1.2 Khử đệ quy bằng ngăn xếp 6

1.2.1 Đ<c đi>m c?a an toBn mCng 6

1.2.2 C1c hDnh thEc tFn công mCng ph$ biến 6

1.2.3 C1c mô hDnh bIo mJt mCng 6

1.2.4 C1c biện ph1p bIo mJt 6

CHƯƠNG 2: THUẬT TOÁN SẮP XẾP 6

2.1 ThuJt to1n Buble sort 6

2.1.1 Aliase ( BU danh) 6

2.1.2 Rules ( LuJt) 6

2.1.3 NAT ( Biên dZch đZa ch[ mCng) 6

2.1.4 Routing ( ĐZnh tuyến) 6

2.1.5 Virtual Ips ( IP Io) 6

2.1.6 Schedules ( LZch trDnh) 6

2.1.7 Traffic Sharper ( QuIn l^ băng thông) 6

2.2 M_t s` chEc năng vB dZch va kh1c 6

2.2.1 VPN 6

2.2.2 Package Manager ( TrDnh quIn l^ gci) 6

2.2.3 Captive Portal ( C$ng c` đZnh) 6

2.2.4 DHCP ( Giao thEc cFu hDnh host đ_ng) 6

2.2.5 Snort 6

CHƯƠNG 3: THUẬT TOÁN TÌM KIẾM 6

3.1 CBi đ<t vB cFu hDnh m1y Io 6

Trang 4

3.1.1 Eve-ng 6

3.1.2 Firewall Pfsense 2.7.0 9

3.1.3 Ubuntu Server 22.04 12

3.1.4 Windows 10 15

3.1 Tri>n khai phmn thử nghiệm 19

3.1.3 BIng đZa ch[ IP c1c thiết bZ 20

3.2 CFu hDnh thiết bZ Router 22

3.2.1 CFu hDnh đZa ch[ IP cho c1c c$ng router R2 22

3.2.2 CFu hDnh đZnh tuyến tnnh 22

3.2.3 CFu hDnh cFp IP đ_ng cho c1c PC tCi chi nh1nh Ho ChU Minh 22

3.3 CFu hDnh Firewall Pfsense 23

3.3.1 CFu hDnh đZa chi IP cho c1c c$ng 23

3.3.2 CFu hDnh đZnh tuyến 23

3.3.3 CFu hDnh Aliases( BU danh) 24

3.3.4 CFu hDnh Rules ( LuJt) 25

3.3.5 CFu hDnh DHCP 27

3.3.6 CFu hDnh DNS 28

3.3.7 CFu hDnh NAT ( Biên dZch đZa ch[ mCng) 29

3.3.8 CFu hDnh Schedules 30

3.3.9 CFu hDnh Traffic Shaper 30

3.3.10 CFu hDnh VPN 32

3.3.11 CFu hDnh Snort 36

3.4 CFu hDnh Web Server 37

3.5 Kết quI chCy thử nghiệm 39

3.5.1 Ki>m tra dZch va DHCP 39

3.5.2 Ki>m tra tUnh liên thông trong mCng 43

3.5.3 Ki>m tra dZch va Web 47

3.5.4 Ki>m tra dZch va DNS 48

3.5.5 Ki>m tra dZch va VPN 49

Trang 5

3.5.6 Ki>m tra tUnh năng Snort 52 CHƯƠNG 4: THUẬT TOÁN TRÊN ĐỒ THỊ 55 TÀI LIỆU THAM KHẢO 56

Trang 6

MỤC LỤC ẢNH

Trang 7

DANH MỤC TỪ VIẾT TẮT

Dịch sang địa chỉ vật lý mạng

Giao thức Internet

Mạng riêng ảo

4

5

6

7

8

Trang 8

L&I M' Đ)U

Công nghệ thông tin (Information Technology) là một ngành khoa học và có cả các yếu tố như công nghệ và kinh tế trong đó Các sinh viên chú ý nếu có tiếng Anh mà đã có tiếng Việt tương ứng thì không cần để nguyên bản tiếng Anh trong ngoặc Viết như dòng thứ nhất cho trường hợp từ tiếng Anh

đó chưa phổ dụng và các em tạm sử dụng các thuật ngữ tiếng Việt

Trang 9

CHƯƠNG 1 THUẬT TOÁN ĐỆ QUY

1.1 Tng quan v đệ quy

1.1.1 Khi niệm

Đệ quy lB m_t c1ch giIi quyết bBi to1n bằng c1ch chia nhỏ bBi to1n thBnh c1c bBi to1n con gi`ng hệt nhau, roi giIi quyết từng bBi to1n con đc HBm sẽ tự gọi lCi chUnh nc cho đến khi g<p m_t trường hợp đơn giIn nhFt (đi+u kiện dừng) thD trI v+ kết quI

1.1.2 Đặc điểm của đệ quy

Điều kiện dừng: Điều kiện dừng giúp ngăn chặn việc gọi hàm vô tận và là một phần thiết

yếu của hàm đệ quy.

Phần đệ quy: Phần của hàm đệ quy sẽ gọi chính nó với một bài toán con nhỏ hơn, hướng

tới điều kiện cơ bản.

Hnh 1.1: Gii thiê u v đệ quy

1.1.3 Các loại đệ quy

Đệ quy tuyến tính (Linear Recursion)

Đệ quy đuôi (Tail Recursion)

Đệ quy nhị phân (Binary Recursion)

Đệ quy hỗ tương (Mutual Recursion)

Trang 10

1.2 Khử đệ quy bằng ngăn xếp

1.2.1 Khi niệm khử đệ quy

Khử đệ quy là việc biến đổi một thuật toán sử dụng hàm gọi lại chính nó (đệ quy) thành một thuật toán sử dụng vòng lặp Mục tiêu của việc này là tăng hiệu suất và tránh rủi ro tràn ngăn xếp trong một số trường hợp.

1.2.1 Khử đệ quy bằng ngăn xếp

Ngăn xếp có thể lưu trữ trạng thái của hàm đệ quy tại mỗi bước, bao gồm các tham số và địa chỉ tiếp theo cần thực hiện Khi chuyển từ đệ quy sang lặp, ngăn xếp giúp theo dõi các bước tiếp theo và giá trị tạm thời

Hnh 1.2: Cấu trúc khử đệ quy bằng ngăn xếp

CHƯƠNG 2: THUẬT TOÁN SẮP XẾP

Trang 11

2.1 Thuật ton Buble sort

2.1.1 Khái niêm

Thuật toán Bubble Sort hoạt động bằng cách so sánh từng cặp phần tử liền kề trong một dãy và đổi chỗ chúng nếu chúng ở vị trí sai Quá trình này được lặp đi lặp lại cho đến khi không còn sự đổi chỗ nào xảy

ra, nghĩa là dãy đã được sắp xếp.

2.1.2 Nguyên lý hoạt động

1. So sánh và đổi chỗ: Bắt đầu từ phần tử đầu tiên, so sánh phần tử hiện tại với phần tử kế tiếp

Nếu phần tử hiện tại lớn hơn phần tử kế tiếp (trong trường hợp sắp xếp tăng dần), thì đổi chỗ chúng.

2. Lặp lại: Tiếp tục quá trình so sánh và đổi chỗ cho các cặp phần tử còn lại trong dãy.

3. Di chuyển phần tử lớn nhất: Sau mỗi vòng lặp, phần tử lớn nhất sẽ "nổi lên" và được đặt vào

đúng vị trí cuối cùng.

4. Kết thúc: Khi không còn sự đổi chỗ nào xảy ra trong một vòng lặp, nghĩa là dãy đã được sắp xếp

và thuật toán kết thúc.

Hnh 2.1: Quy tắc Buble Sort

Trang 12

Hnh 2.2: Thuật toán buble sort

2.1.3 Ưu điểm và nhược điểm

Ưu điểm:

o Là thuật toán cơ bản, dễ hiểu, phù hợp cho người bắt đầu học về sắp xếp.

o Đoạn code ngắn gọn, dễ nhớ.

Nhược điểm:

o Hiệu suất chậm nhất trong các thuật toán sắp xếp.

o Không hiệu quả với những dữ liệu lớn.

Trang 13

CHƯƠNG 3: THUẬT TOÁN TÌM KIẾM

3.1 Thuật toán Tìm kiếm Nhị phân (Binary Search)

3.1.1 Khái niệm

Tìm kiếm nhị phân là một thuật toán tìm kiếm hiệu quả được sử dụng để tìm một phần tử trong một dãy đã được sắp xếp Thay vì kiểm tra từng phần tử một như trong tìm kiếm tuần tự, thuật toán này hoạt động bằng cách liên tục chia đôi khoảng tìm kiếm O(log n)

3.1.2 Nguyên lý hoạt động

1 Khởi tạo: Xác định khoảng tìm kiếm ban đầu là toàn bộ dãy.

2 Tìm phần tử giữa: Tìm phần tử ở vị trí giữa của khoảng tìm kiếm.

3 So sánh: So sánh phần tử giữa với phần tử cần tìm.

o Bằng nhau: Tìm thấy phần tử.

o Lớn hơn: Phần tử cần tìm nằm trong nửa trái của khoảng.

o Nhỏ hơn: Phần tử cần tìm nằm trong nửa phải của khoảng.

4 Điều chỉnh khoảng tìm kiếm: Thu hẹp khoảng tìm kiếm dựa vào kết quả so

sánh ở bước 3

5 Lặp lại: Tiếp tục các bước 2, 3, 4 cho đến khi tìm thấy phần tử hoặc khoảng

tìm kiếm trở nên rỗng

Trang 14

Hnh 3.1: Quy tắc của tm kiếm nhị phân

3.1.6 Ưu điểm và nhược điểm

Ưu điểm:

o Hiệu suất cao: Với các dãy lớn, tìm kiếm nhị phân nhanh hơn nhiều

so với tìm kiếm tuần tự

o Dễ hiểu: Nguyên lý hoạt động tương đối đơn giản.

Nhược điểm:

o Yêu cầu dãy đã được sắp xếp: Nếu dãy chưa được sắp xếp, cần phải

sắp xếp trước khi áp dụng thuật toán

Trang 15

Hnh 3.2: Thuật toán tm kiếm nhị phân

CHƯƠNG 4: THUẬT TOÁN TRÊN ĐỒ THỊ

4.1 Giới thiệu về đồ thị

Định nghĩa: Đồ thị là một cấu trúc dữ liệu bao gồm một tập hợp các đỉnh (node) và một tập hợp

các cạnh (edge) kết nối các đỉnh với nhau.

Trang 16

Phân loại đồ thị:

o Đồ thị vô hướng: Các cạnh không có hướng, tức là mối quan hệ giữa hai đỉnh là hai

chiều.

o Đồ thị có hướng: Các cạnh có hướng, tức là mối quan hệ giữa hai đỉnh là một chiều.

Cách biểu diễn đồ thị:

o Ma trận kề: một ma trận vuông, trong đó phần tử ở hàng i và cột j cho biết có cạnh nối

giữa đỉnh i và đỉnh j hay không.,

o Danh sách kề: một mảng, mỗi phần tử của mảng là một danh sách các đỉnh kề với đỉnh

tương ứng.

4.2 Tìm kiếm trên đồ thị

Mục tiêu: Duyệt qua tất cả các đỉnh của đồ thị.

Ứng dụng: Tìm đường đi, tìm thành phần liên thông, phát hiện chu trình,

4.2.1 Tìm kiếm theo chiều rộng (Breadth-First Search - BFS)

Nguyên lý: Duyệt các đỉnh theo lớp, bắt đầu từ một đỉnh nguồn, sau đó duyệt các đỉnh kề trực

tiếp, rồi đến các đỉnh kề của các đỉnh vừa duyệt, và cứ tiếp tục như vậy.

Thuật toán:

o Khởi tạo một hàng đợi để lưu trữ các đỉnh cần duyệt.

o Đánh dấu đỉnh bắt đầu là đã được thăm.

o Thêm đỉnh bắt đầu vào hàng đợi.

o Trong khi hàng đợi không rỗng:

 Lấy đỉnh đầu ra khỏi hàng đợi.

 Duyệt qua tất cả các đỉnh kề của đỉnh vừa lấy ra.

 Nếu đỉnh kề chưa được thăm, đánh dấu và thêm vào hàng đợi.

Ưu điểm:

o Tìm được đường đi ngắn nhất từ đỉnh bắt đầu đến tất cả các đỉnh khác (trong đồ thị không trọng số).

Nhược điểm:

o Tốn nhiều bộ nhớ hơn DFS.

Ứng dụng:

o Tìm đường đi ngắn nhất trong đồ thị không trọng số.

o Kiểm tra đồ thị có liên thông hay không.

o Tìm thành phần liên thông.

Trang 17

 Cài đặt thuật toán

Hnh 4.1: Thuật toán BFS

4.2.2 Tìm kiếm theo chiều sâu (Depth-First Search - DFS)

Nguyên lý: Duyệt sâu vào một nhánh của đồ thị trước khi quay lại duyệt các nhánh khác.

Thuật toán:

o Khởi tạo:

Trang 18

và gán giá trị mặc định là chưa thăm (ví dụ: 0).

 Tạo một ngăn xếp (stack) để lưu trữ các đỉnh trong quá trình duyệt.

o Bắt đầu từ đỉnh xuất phát:

 Đưa đỉnh xuất phát vào ngăn xếp và đánh dấu nó là đã thăm.

o Duyệt qua các đỉnh:

 Trong khi ngăn xếp không rỗng:

 Lấy đỉnh trên cùng của ngăn xếp (đỉnh hiện tại).

 Nếu đỉnh này chưa được thăm:

 Xử lý hoặc in đỉnh (tuỳ thuộc vào yêu cầu của bài toán).

 Đánh dấu đỉnh là đã thăm.

 Thêm tất cả các đỉnh kề chưa thăm vào ngăn xếp.

o Tiếp tục cho đến khi ngăn xếp rỗng:

 Quá trình sẽ tiếp tục cho đến khi không còn đỉnh nào trong ngăn xếp.

Ưu điểm:

o Sử dụng bộ nhớ ít hơn BFS.

Nhược điểm:

o Không đảm bảo tìm được đường đi ngắn nhất.

Ứng dụng:

o Tìm chu trình trong đồ thị.

o Giải các bài toán về tìm đường đi.

 Cài đặ thuật toán

Trang 19

Hnh 4.1: Thuật toán DFS

Ngày đăng: 22/01/2025, 14:49

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN