Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn DSA

DSA TRANG CHỦ DSA Giới thiệu Thuật toán đơn giản DSA

Mảng

Mảng DSA Sắp xếp bong bóng DSA Sắp xếp lựa chọn DSA Sắp xếp chèn DSA Sắp xếp nhanh DSA Sắp xếp đếm DSA Sắp xếp cơ số DSA Sắp xếp hợp nhất DSA Tìm kiếm tuyến tính DSA Tìm kiếm nhị phân DSA

Danh sách liên kết

Danh sách liên kết DSA Danh sách liên kết DSA trong bộ nhớ Danh sách liên kết DSA Các loại Danh sách liên kết Hoạt động

Ngăn xếp & hàng đợi

Ngăn xếp DSA Hàng đợi DSA

Bảng băm

Bảng băm DSA Bộ hàm băm DSA Bản đồ hàm băm DSA

Cây

Cây DSA Cây nhị phân DSA DSA Traversal đặt hàng trước DSA Traversal theo thứ tự DSA Traversal DSA sau thực hiện mảng DSA Cây tìm kiếm nhị phân DSA Cây AVL DSA

Đồ thị

Đồ thị DSA Thực hiện đồ thị Đồ thị DSA Phát hiện chu trình DSA truyền tải

Con đường ngắn nhất

Đường đi ngắn nhất DSA DSA Bellman-Ford của DSA Dijkstra

Cây bao trùm tối thiểu

Cây khung tối thiểu DSA Prim's DSA Kruskal's

Lưu lượng cực đại

DSA Lưu lượng tối đa DSA Ford-Fulkerson DSA Edmonds-Karp

Độ phức tạp thời gian

Giới thiệu Sắp xếp bong bóng Lựa chọn Sắp xếp Chèn Sắp xếp Sắp xếp nhanh Đếm Sắp xếp Cơ số Sắp xếp Hợp nhất Sắp xếp Tìm kiếm tuyến tính Tìm kiếm nhị phân

Tham chiếu DSA

Thuật toán Euclide DSA Thuật toán tham lam DSA Ghi nhớ DSA DSA Người bán hàng du lịch

Ví dụ về DSA

Ví dụ về DSA Bài tập DSA Câu hỏi DSA Chứng chỉ DSA

Đồ thị DSA


Đồ thị

Đồ thị là cấu trúc dữ liệu phi tuyến tính bao gồm các đỉnh (nút) và các cạnh.

F 2 4 B C MỘT E D G

Đỉnh hay còn gọi là nút là một điểm hoặc một đối tượng trong Đồ thị và một cạnh dùng để nối hai đỉnh với nhau.

Đồ thị không tuyến tính vì cấu trúc dữ liệu cho phép chúng ta có các đường dẫn khác nhau để đi từ đỉnh này sang đỉnh khác, không giống như các cấu trúc dữ liệu tuyến tính như Mảng hoặc Danh sách liên kết.

Đồ thị được sử dụng để biểu diễn và giải quyết các vấn đề trong đó dữ liệu bao gồm các đối tượng và mối quan hệ giữa chúng, chẳng hạn như:

  • Mạng xã hội: Mỗi người là một đỉnh và các mối quan hệ (như tình bạn) là các cạnh. Thuật toán có thể gợi ý những người bạn tiềm năng.
  • Bản đồ và Điều hướng: Các vị trí, như thị trấn hoặc điểm dừng xe buýt, được lưu dưới dạng các đỉnh và đường được lưu dưới dạng các cạnh. Thuật toán có thể tìm ra con đường ngắn nhất giữa hai vị trí khi được lưu trữ dưới dạng Biểu đồ.
  • Internet: Có thể được biểu diễn dưới dạng Biểu đồ, với các trang web là các đỉnh và siêu liên kết là các cạnh.
  • Sinh học: Đồ thị có thể mô hình hóa các hệ thống như mạng lưới thần kinh hoặc sự lây lan của bệnh tật.

Thuộc tính đồ thị

Sử dụng hoạt ảnh bên dưới để hiểu về các thuộc tính khác nhau của Biểu đồ và cách kết hợp các thuộc tính này.

4 F 2 4 3 4 B C 5 5 3 MỘT 3 3 E D G

Biểu đồ có trọng số là Biểu đồ trong đó các cạnh có giá trị. Giá trị trọng số của một cạnh có thể biểu thị những thứ như khoảng cách, sức chứa, thời gian hoặc xác suất.

Đồ thị được kết nối là khi tất cả các đỉnh được kết nối thông qua các cạnh bằng cách nào đó. Đồ thị không được kết nối là Đồ thị có các đồ thị con bị cô lập (rời rạc) hoặc các đỉnh cô lập đơn lẻ.

Đồ thị có hướng , còn được gọi là đồ thị ghép, là khi các cạnh giữa các cặp đỉnh có hướng. Hướng của một cạnh có thể biểu thị những thứ như thứ bậc hoặc dòng chảy.

Biểu đồ tuần hoàn được định nghĩa khác nhau tùy thuộc vào việc nó có được định hướng hay không:

  • Đồ thị tuần hoàn có hướng là khi bạn có thể đi theo một đường dọc theo các cạnh có hướng đi theo vòng tròn. Việc loại bỏ cạnh có hướng từ F đến G trong hoạt ảnh ở trên làm cho Đồ thị có hướng không còn tuần hoàn nữa.
  • Đồ thị tuần hoàn vô hướng là khi bạn có thể quay lại cùng một đỉnh mà bạn đã bắt đầu mà không cần sử dụng cùng một cạnh nhiều lần. Đồ thị vô hướng ở trên là đồ thị tuần hoàn vì chúng ta có thể bắt đầu và kết thúc ở đỉnh C mà không cần sử dụng cùng một cạnh hai lần.

Một vòng lặp , còn được gọi là vòng tự lặp, là một cạnh bắt đầu và kết thúc trên cùng một đỉnh. Vòng lặp là một chu trình chỉ bao gồm một cạnh. Bằng cách thêm vòng lặp trên đỉnh A trong hoạt ảnh ở trên, Biểu đồ sẽ trở thành tuần hoàn.


Biểu diễn đồ thị

Biểu diễn đồ thị cho chúng ta biết đồ thị được lưu trữ trong bộ nhớ như thế nào.

Các cách biểu diễn đồ thị khác nhau có thể:

  • chiếm nhiều hay ít không gian.
  • tìm kiếm hoặc thao tác nhanh hơn hoặc chậm hơn.
  • sẽ phù hợp hơn tùy thuộc vào loại Biểu đồ mà chúng tôi có (có trọng số, được hướng dẫn, v.v.) và những gì chúng tôi muốn làm với Biểu đồ.
  • dễ hiểu và dễ thực hiện hơn những cách khác.

Dưới đây là phần giới thiệu ngắn gọn về các cách biểu diễn Đồ thị khác nhau, nhưng Ma trận kề là cách biểu diễn mà chúng tôi sẽ sử dụng cho các Đồ thị trong phần tiếp theo của hướng dẫn này, vì nó dễ hiểu và dễ thực hiện cũng như hoạt động trong mọi trường hợp có liên quan đến hướng dẫn này.

Biểu diễn đồ thị lưu trữ thông tin về các đỉnh liền kề nhau và các cạnh giữa các đỉnh như thế nào. Biểu diễn đồ thị hơi khác một chút nếu các cạnh được định hướng hoặc có trọng số.

Hai đỉnh là kề nhau hoặc lân cận nếu có một cạnh giữa chúng.


Biểu diễn đồ thị ma trận kề

Ma trận kề là cách biểu diễn (cấu trúc) đồ thị mà chúng tôi sẽ sử dụng cho hướng dẫn này.

Cách triển khai Ma trận kề được hiển thị trên trang tiếp theo.

Ma trận kề là một mảng 2D (ma trận) trong đó mỗi ô trên chỉ mục (i,j) lưu trữ thông tin về cạnh từ đỉnh i đến đỉnh j .

Dưới đây là Biểu đồ có biểu diễn Ma trận kề bên cạnh.

MỘT B C D MỘT B C D MỘT B C D 1 1 1 1 1 1 1 1
Đồ thị vô hướng
và ma trận kề

Ma trận kề ở trên biểu thị một Đồ thị vô hướng, vì vậy các giá trị '1' chỉ cho chúng ta biết các cạnh ở đâu. Ngoài ra, các giá trị trong ma trận kề là đối xứng vì các cạnh đi cả hai chiều (Đồ thị vô hướng).

Để tạo Đồ thị có hướng với ma trận kề, chúng ta phải quyết định các cạnh đi từ và đến đỉnh nào bằng cách chèn giá trị vào đúng chỉ mục (i,j) . Để biểu diễn Biểu đồ có trọng số, chúng ta có thể đặt các giá trị khác ngoài '1' bên trong ma trận kề.

Dưới đây là Biểu đồ có hướng và có trọng số với biểu diễn Ma trận kề bên cạnh.

MỘT B 1 3 C 4 2 D MỘT B C D MỘT B C D 3 2 1 4
Đồ thị có hướng và có trọng số,
và ma trận kề của nó.

Trong ma trận kề trên, giá trị 3 của chỉ số (0,1) cho ta biết có một cạnh từ đỉnh A đến đỉnh B và trọng số của cạnh đó là 3 .

Như bạn có thể thấy, các trọng số được đặt trực tiếp vào ma trận kề cho cạnh chính xác và đối với Đồ thị có hướng, ma trận kề không nhất thiết phải đối xứng.


Biểu diễn đồ thị danh sách kề

Trong trường hợp chúng ta có Đồ thị 'thưa thớt' với nhiều đỉnh, chúng ta có thể tiết kiệm dung lượng bằng cách sử dụng Danh sách kề so với việc sử dụng Ma trận kề, vì Ma trận kề sẽ dành nhiều bộ nhớ trên các phần tử Mảng trống cho các cạnh không tồn tại .

Biểu đồ 'thưa thớt' là Biểu đồ trong đó mỗi đỉnh chỉ có các cạnh với một phần nhỏ của các đỉnh khác trong Biểu đồ.

Danh sách kề có một mảng chứa tất cả các đỉnh trong Biểu đồ và mỗi đỉnh có một Danh sách liên kết (hoặc Mảng) với các cạnh của đỉnh đó.

MỘT B C D0 1 2 3 MỘT B C D 3 1 2 vô giá trị 0 3 vô giá trị 1 0 vô giá trị 0 vô giá trị
Đồ thị vô hướng
và danh sách kề của nó.

Trong danh sách kề ở trên, các đỉnh từ A đến D được đặt trong một mảng và mỗi đỉnh trong mảng có chỉ số được viết ngay bên cạnh.

Mỗi đỉnh trong Mảng có một con trỏ tới Danh sách liên kết đại diện cho các cạnh của đỉnh đó. Cụ thể hơn, Danh sách liên kết chứa các chỉ mục cho các đỉnh (láng giềng) liền kề.

Vì vậy, ví dụ, đỉnh A có liên kết đến Danh sách liên kết với các giá trị 3, 1 và 2. Các giá trị này là chỉ mục cho các đỉnh D, B và C liền kề của A.

Danh sách kề cũng có thể biểu thị Biểu đồ có hướng và có trọng số, như sau:

MỘT B 1 3 C 4 2 D0 1 2 3 MỘT B C D 1,3 2,2 vô giá trị vô giá trị 1,1 vô giá trị 0,4 vô giá trị
Đồ thị có hướng và có trọng số
và danh sách kề của nó.

Trong Danh sách kề ở trên, các đỉnh được lưu trữ trong Mảng. Mỗi đỉnh có một con trỏ tới Danh sách liên kết với các cạnh được lưu dưới dạng i,w , trong đó i là chỉ mục của đỉnh mà cạnh đi tới và w là trọng số của cạnh đó.

Ví dụ: Nút D có một con trỏ tới Danh sách liên kết có cạnh tới đỉnh A. Các giá trị 0,4 có nghĩa là đỉnh D có cạnh tới đỉnh trên chỉ số 0 (đỉnh A) và trọng số của cạnh đó là 4 .


Bài tập DSA

Kiểm tra bản thân bằng các bài tập

Bài tập:

Biểu đồ dưới đây có thể được mô tả như thế nào?

Một đồ thị

Đồ thị có tính tuần hoàn, 
được kết nối và .

Bắt đầu bài tập



×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .