Đồ thị trong điều khoản của giáo dân là gì


18

Đồ thị, trong khoa học máy tính là gì và chúng được sử dụng để làm gì? Trong điều khoản của giáo dân tốt nhất là.

Tôi đã đọc định nghĩa trên Wikipedia :

Trong khoa học máy tính, đồ thị là một kiểu dữ liệu trừu tượng có nghĩa là để thực hiện các khái niệm đồ thị và siêu đồ thị từ toán học.

Một cấu trúc dữ liệu đồ thị bao gồm một tập hợp hữu hạn (và có thể thay đổi) của các cặp theo thứ tự, được gọi là cạnh hoặc cung, của các thực thể nhất định được gọi là nút hoặc đỉnh. Như trong toán học, một cạnh (x, y) được cho là trỏ hoặc đi từ x đến y. Các nút có thể là một phần của cấu trúc biểu đồ hoặc có thể là các thực thể bên ngoài được biểu thị bằng các chỉ số nguyên hoặc tham chiếu.

nhưng tôi đang tìm kiếm một định nghĩa ít trang trọng hơn, dễ hiểu hơn.


Bạn có nghĩa là đồ thị cấu trúc dữ liệu?
Hệ thống xuống

1
Vâng xin lôi. Các biểu đồ như được mô tả ở đây en.wikipedia.org/wiki/Graph_(abauge_data_type) , chỉ tôi đang tìm kiếm một định nghĩa ít trang trọng hơn, dễ hiểu hơn.
Điều

@ Justin984 Wikipedia liên kết với dấu ngoặc đơn (và có rất nhiều trong số chúng) không hoạt động, dấu ngoặc đơn không chơi tốt với định dạng Markdown cho liên kết. Bây giờ, để tham khảo trong tương lai, vui lòng thêm bất kỳ nội dung làm rõ nào cho câu hỏi của bạn trong chính câu hỏi, không phải trong nhận xét, chúng không hiển thị và rất dễ bỏ lỡ chúng. Tôi sẽ chỉnh sửa nhận xét trên của bạn trong câu hỏi ...
yannis

@ Justin984 Cũng lưu ý rằng Trao đổi ngăn xếp khoa học máy tính thể phù hợp hơn một chút cho các câu hỏi như thế này so với lập trình viên. Đừng hiểu sai ý tôi, câu hỏi hoàn toàn thuộc chủ đề ở đây và nó đã có câu trả lời tuyệt vời, nhưng sẽ không hại gì nếu bạn kiểm tra một cộng đồng tập trung nhiều vào các khái niệm khoa học máy tính cốt lõi hơn chúng ta (không gửi cùng một câu hỏi trong nhiều trang web, nếu bạn tình cờ đăng nó vào trang web sai, chúng ta có thể tự động chuyển nó sang đúng trang web).
yannis

Câu trả lời:


26

Một ví dụ hoàn hảo của giáo dân có thể là Facebook . Mạng lưới của bạn, bạn bè của bạn và bạn bè của họ, v.v., được gọi chung là biểu đồ xã hội .

Trong "biểu đồ" này, mọi người được coi là các nút của biểu đồ và các cạnhcác liên kết hữu nghị .

Trong Facebook, bạn bè là mối quan hệ hai chiều (A là bạn của B => B là bạn của A) vì vậy biểu đồ là Đồ thị vô hướng . Một mạng như Google+ hoặc Twitter sẽ được coi là Đồ thị có hướng vì hướng của mối quan hệ có ý nghĩa ở đây.

Tất cả các biểu đồ này được gọi là biểu đồ tuần hoàn , vì các mối quan hệ giữa các nút có thể tạo thành các chu kỳ. Một cây gia đình , mặt khác, là một loại đặc biệt của đồ thị đó, trong số những thứ khác, là mạch hở kể từ khi không thể có chu kỳ trong relatioship cây gia đình. (Về mặt kỹ thuật, nó được gọi là Đồ thị chu kỳ có hướng (DAG) vì cả hai hướng và theo chu kỳ)

Điều này sẽ bao gồm tất cả các thuật ngữ cơ bản liên quan đến đồ thị, vì vậy bây giờ bạn sẽ có thể theo dõi phần còn lại của tài liệu trong lĩnh vực này.


1
Không thể tin rằng nó đã không xảy ra với tôi rằng nó được gọi là api biểu đồ facebook. Ví dụ tốt!
Điều

4
Cây gia đình không tuần hoàn? Không nên, nhưng thật không may là ...
Marjan Venema

1
@MarjanVenema, cây gia đình có chu kỳ không? (Đó là một đồ thị có hướng, vì vậy hướng là rất quan trọng trong việc xác định chu kỳ, và có lẽ mối quan hệ bước không thực sự đếm.)
Huon

@dbaupp: Tôi không muốn đi sâu vào chi tiết ở đây, vì vậy tôi sẽ chỉ đề cập đến một từ: loạn luân.
Marjan Venema

5
@MarjanVenema, bạn đang thiếu quan điểm của tôi. Một chu kỳ trong đồ thị có hướng là một mô hình như A -> B -> C -> A(tức là một vòng tròn mũi tên), loạn luân chỉ cho A -> B -> CA -> D -> C(tức là một viên kim cương). Một chu kỳ trong cây gia đình cần du hành thời gian.
huon

16

Đồ thị là một trong những khái niệm toán học quan trọng nhất được sử dụng trong khoa học máy tính.

Bạn đã nhìn thấy đồ thị nhiều lần. Hãy tưởng tượng rằng bạn đang đi máy bay từ thành phố này sang thành phố khác. Chắc chắn bạn sẽ tìm thấy một tạp chí bóng đẹp từ hãng hàng không trong túi ghế trước mặt bạn. Gần mặt sau của tạp chí đó, bạn hầu như luôn có thể tìm thấy một bản đồ mô tả các thành phố được phục vụ bởi hãng hàng không đó được thể hiện dưới dạng vòng tròn, với các chuyến bay kết nối các thành phố được biểu thị dưới dạng các đường cong. Đó là một biểu đồ! Các thành phố, được biểu thị dưới dạng các vòng tròn, là các nút của biểu đồ này và các chuyến bay, được biểu thị dưới dạng các đường cong, là các cạnh. Đồ thị chỉ là những thứ có nút và cạnh kết nối các nút.

Bạn có thể tô điểm những đồ thị đơn giản theo nhiều cách khác nhau. Bạn không muốn chỉ nhìn thấy một loạt các vòng tròn và đường kẻ khi bạn nhìn vào bản đồ đó. Những thành phố có tên. Dán nhãn những thành phố đó dẫn đến biểu đồ được dán nhãn. (Bạn cũng có thể gắn nhãn các cạnh, ví dụ: chuyến bay 1234.) Khoa học máy tính thường liên kết dữ liệu với các nút, đôi khi với các cạnh, nhưng đó chỉ là một phần mở rộng của nhãn. Nó vẫn là một biểu đồ được dán nhãn. Một kết quả chỉnh trang khác nếu bạn có thể bay trực tiếp từ thành phố A đến thành phố B, nhưng không phải từ thành phố B đến thành phố A. Một cách rõ ràng để miêu tả điều này là đặt một mũi tên trên đường nối giữa các thành phố để mô tả mối quan hệ một chiều này. Bây giờ bạn có một biểu đồ hướng.

Danh sách liên kết, cây, sơ đồ chuyển trạng thái và rất nhiều cấu trúc dữ liệu khoa học máy tính khác là tất cả các ví dụ về biểu đồ. Đó là một khái niệm rất mạnh mẽ.


Tôi thực sự mở rộng ví dụ đó để lưu ý rằng tất cả các thực thể được mô tả trong ví dụ của bạn có thể được mô tả dưới dạng các đỉnh trong biểu đồ (thành phố, mặt phẳng, tạp chí, bản đồ, v.v.), bản đồ chỉ là một đỉnh duy nhất.
Demian Brecht

14

Một câu hỏi tốt hơn sẽ là "Đồ thị không được sử dụng để làm gì?". Khoa học máy tính, trong nhiều khía cạnh, nghiên cứu về đồ thị.

Một biểu đồ, theo thuật ngữ của giáo dân, là một tập hợp các đối tượng trừu tượng tùy ý được gọi là "nút" hoặc "đỉnh" đại diện cho các điểm kết nối. Sau đó chúng được kết nối thông qua "đường dẫn" hoặc "cạnh". Kiểu dữ liệu trừu tượng "Đồ thị" là một triển khai của "Đồ thị" toán học. Vì vậy, về cơ bản, bạn có các nút và cạnh như các trường của bạn và các hoạt động khác nhau mà bạn có thể thực hiện trên chúng. Ví dụ, bạn có thể thêm một nút mới vào bộ sưu tập của biểu đồ (đây có thể là một danh sách hoặc một mảng hoặc một số cấu trúc khác tùy thuộc vào ngôn ngữ). Sau đó, bạn có thể liên kết nút đó với các nút hiện có. Các hoạt động cũng sẽ bao gồm di chuyển ngang qua biểu đồ, kiểm tra xem hai nút có chia sẻ một cạnh (được kết nối) hay không, truy xuất các giá trị từ các nút hoặc cạnh và xóa các nút hoặc cạnh khỏi biểu đồ.

Theo như sử dụng, đồ thị được sử dụng ở mọi nơi. Mạng sử dụng chúng đặc biệt nặng nề nhưng chúng được tìm thấy trong Trí tuệ nhân tạo, Khai thác dữ liệu, Phát triển trò chơi, Địa tin học và một loạt các ngành khác. Trong Khoa học máy tính chính thức, họ thấy sử dụng nhiều hơn, cụ thể như là một cách đại diện cho nhà nước.

Thực tế, bất cứ điều gì bạn có thể biểu diễn dưới dạng một tập hợp các kết nối đều có thể được biểu diễn dưới dạng biểu đồ và được triển khai thông qua ADT đó dưới một hình thức nào đó.

Đây là một ví dụ đồ họa tôi đã thực hiện:

Ví dụ đồ thị


3

Biểu đồ chỉ là một tập hợp các đối tượng được kết nối với nhau bằng các đường được gọi là đỉnh.

Thuật ngữ "đồ thị" là một sự trừu tượng hóa và khái quát hóa của nhiều cấu trúc dữ liệu được sử dụng trong phát triển phần mềm. Danh sách liên kết, cây nhị phân và AST là tất cả các biểu đồ.

Về cơ bản, bất kỳ tập hợp các đối tượng có con trỏ liên kết các đối tượng với nhau là một biểu đồ. Khi bạn có một biểu đồ, bạn có thể áp dụng các nguyên tắc của lý thuyết biểu đồ cho nó, để giải quyết các vấn đề nhất định .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.