Cách tiếp cận các vấn đề liên quan đến đồ thị động


15

Tôi đã hỏi câu hỏi này tại stackoverflow chung và tôi được hướng dẫn ở đây.

Sẽ thật tuyệt nếu ai đó có thể giải thích cách tiếp cận các vấn đề đồ thị một phần hoặc hoàn toàn động nói chung.

Ví dụ:

  • Tìm đường đi ngắn nhất giữa hai đỉnh trong đồ thị có trọng số không xác định cho n thể hiện, khi một cạnh bị loại bỏ ở mỗi trường hợp.(bạn,v)n
  • Tìm số lượng các thành phần được kết nối trong một biểu đồ vô hướng cho n trường hợp khi một cạnh bị loại bỏ ở mỗi trường hợp, v.v.

Gần đây tôi đã gặp phải thể loại vấn đề này trong một cuộc thi lập trình. Tôi đã tìm kiếm thông qua trang web và tôi tìm thấy rất nhiều tài liệu nghiên cứu liên quan đến đồ thị động [1,2]. Tôi đã đọc một vài trong số chúng và tôi không thể tìm thấy bất cứ điều gì thẳng tiến (phân cụm, thưa thớt, v.v.). Xin lỗi vì mơ hồ.

Tôi thực sự đánh giá cao nếu một số có thể cung cấp con trỏ để hiểu các khái niệm này tốt hơn.


  1. Thuật toán đồ thị động của D. Eppstein, Z. Galil, GF Italiano (1999)
  2. Các đường dẫn ngắn nhất trên đồ thị động của G. Nannicini, L. Liberti (2008)

Câu trả lời:


12

Thật khó để cung cấp cho bạn các kỹ thuật cụ thể vì "động" có thể có nghĩa là nhiều thứ khác nhau và các thuật toán / kết quả phụ thuộc vào mô hình của bạn. Dưới đây là tổng quan về các mối quan tâm. Dưới đây là một bài viết đưa ra một cái nhìn tổng quan về một số mối quan tâm và mô hình khác nhau (liên quan đến những gì Peter trích dẫn trong một câu trả lời khác).


Đối với các vấn đề động nói chung, các vấn đề chính là:

  • Bạn có muốn một giải pháp chính xác trong mọi trường hợp, hoặc được phép xấp xỉ?
  • Bạn có biết bất cứ điều gì về những thay đổi sẽ xảy ra (ví dụ: phân phối xác suất), hoặc tất cả chúng đều có khả năng như nhau?
  • thuật toán học về những thay đổi như thế nào?

Một mô hình động điển hình là một cái gì đó như sau:

  1. Đưa ra một biểu đồ, bạn muốn tính toán một số tài sản. Bạn được phép tính toán một giải pháp cho biểu đồ ban đầu.

  2. Sau đó, bạn được thông báo một sửa đổi: cạnh bị xóa. Tính toán tài sản trên biểu đồ mới bằng cách sử dụng các nguồn lực hạn chế .(e,f)

  3. Lặp lại 2 lần .n

Và đây là 3 sửa đổi có thể:

  • Bạn không được phép tính toán giải pháp hoàn chỉnh ngay từ đầu vì giới hạn thông tin / thời gian / không gian (một ví dụ trong số đó là thuật toán trực tuyến )

  • Trong bước 2, thuật toán không được "bảo" sửa đổi, mà phải tìm sửa đổi trong biểu đồ bằng cách truy vấn cấu trúc dữ liệu hoặc một cái gì đó.

  • Một mô hình phân tán (như Peter thảo luận trong một câu trả lời khác), trong đó thông tin được phát hiện cục bộ và tính toán / thay đổi được thực hiện cục bộ.

Các mô hình động thường rất thú vị vì giới hạn tài nguyên (ví dụ: thời gian / không gian). Trong bước 2, nếu tôi được phép tính toán một câu trả lời hoàn chỉnh (như tôi đã làm ở bước 1) thì vấn đề rất dễ dàng, vì đó chỉ là một vấn đề đồ thị tĩnh lặp đi lặp lại . Chúng tôi quan tâm nhiều hơn đến lượng tài nguyên nhỏ nhất cần thiết để tính toán thay đổi.


Cám ơn đã trả lời. Tôi đã cố gắng để hiểu được sự phức tạp và cách giải quyết một vấn đề đồ thị động một phần đơn giản.
Prakash

Cám ơn đã trả lời. Tôi sẽ đi qua các giấy tờ. Tôi đã cố gắng để hiểu được sự phức tạp và cách giải quyết một vấn đề đồ thị động một phần đơn giản. Ví dụ: Đưa ra một tập hợp các thành phố, được kết nối bằng đường, không bị ảnh hưởng và có trọng số theo khoảng cách. Tìm con đường ngắn nhất giữa 2 thành phố, trong n trường hợp, khi một con đường bị chặn ở mỗi trường hợp vì nhiều lý do. Chạy Dijkstra chẳng hạn là không thực tế, có cách nào để điều chỉnh các thuật toán hiện có như A * để giải quyết các vấn đề này với thời gian tốt hơn, hoặc các cách tiếp cận được thảo luận trong bài báo là cách duy nhất để đi.
Prakash

A * là một khái quát của Dijkstra + heuristic; hiệu suất là tương tự trong trường hợp xấu nhất. Đối với tôi, câu hỏi quan trọng cho vấn đề của bạn là "loại thông tin nào bạn có thể lưu trữ giữa các trường hợp sẽ làm cho trường hợp tiếp theo nhanh hơn?" Ví dụ: nếu tôi lưu trữ con đường ngắn nhất trước đó, tôi sẽ có thể nhanh chóng tìm ra nếu nó "thất bại", nhưng không có cách rõ ràng nào để tính toán con đường ngắn nhất tiếp theo. (Ngay cả khi bạn lưu trữ k đường dẫn ngắn nhất từ ​​phiên bản trước, tôi nghi ngờ điều này giữ cho bất kỳ k.)
Lucas Cook

(Nhận xét trước đây của tôi chủ yếu nói về các giải pháp trong trường hợp xấu nhất. Có lẽ bạn quan tâm đến trường hợp trung bình? Sau đó, có thể có một heuristic tạo ra một loại giải pháp A * tốt.)
Lucas Nấu

10

Các mô hình đồ thị động đã được nghiên cứu chuyên sâu về điện toán phân tán. Đối với các thuật toán phân tán, việc tính toán được cấu trúc thành các vòng và cấu trúc liên kết của đồ thị (= mạng) có thể trải qua một số thay đổi từ vòng này sang vòng khác, nằm dưới sự kiểm soát của một kẻ thù. Hơn nữa, mỗi nút của biểu đồ chạy một thuật toán có thể gửi tin nhắn đến các hàng xóm (hiện tại!) Của nó. (Thông báo này là đầu vào của thuật toán của hàng xóm trong vòng tiếp theo.) Điều khiến mọi thứ thú vị, đó là một nút không "nhìn thấy" toàn bộ biểu đồ mà chỉ là vùng lân cận cục bộ của nó.

Các vấn đề được xem xét trong các cài đặt này là ví dụ về thông tin lan truyền trong đó mọi nút trong biểu đồ ban đầu giữ mã thông báo và cuối cùng bạn muốn rằng mọi nút đã nhìn thấy mọi mã thông báo. Mục tiêu là thiết kế các thuật toán đạt được điều này trong số vòng nhỏ nhất, sử dụng số lượng tin nhắn ít nhất. Xem [2] cho một cuộc khảo sát gần đây.

Đối với cài đặt không được phân phối, bạn có thể muốn xem [1], đây là phần mở rộng của bài báo mà bạn đã đề cập.


[1] Aris Anagnostopoulos, Ravi Kumar, Mohammad Mahdian, Eli Upfal, Fabio Vandin: Thuật toán về đồ thị phát triển . ITCS 2012: 149-160

[2] Fabian Kuhn, Rotem Oshman: Mạng động: mô hình và thuật toán . SIGACT Tin tức 42 (1): 82-96 (2011)


Không phải những thuật toán chuyển thông điệp có vấn đề với (thiếu) hội tụ?
Raphael

Không chắc chắn tôi hiểu ý của bạn với "sự hội tụ". Miễn là đồ thị vẫn được kết nối trong mỗi vòng, số lượng nút đã thấy một mã thông báo cụ thể sẽ tăng ít nhất 1. Do đó, sau n vòng, mọi người sẽ thấy t, bất kể đối thủ thay đổi cấu trúc liên kết như thế nào.
Peter

Tôi đã nghĩ về vấn đề đếm đến vô tận do thay đổi cấu trúc liên kết.
Raphael

@Raphael Trong động lực học phân tán, các nhà nghiên cứu thường nghiên cứu xem tính chất nào có thể là trường hợp xấu nhất được đảm bảo trong một khung thời gian nhất định. Do đó, "sự hội tụ" không thể được đảm bảo cho vectơ khoảng cách / Bellman-Ford vì các vấn đề cơ bản với kỹ thuật trong môi trường động. Có các giao thức định tuyến hội tụ khác không có vấn đề đếm đến vô tận.
Lucas Cook

3

Dựa trên các câu trả lời @Peter (đó là một nhận xét rất dài, vì vậy tôi chỉ đưa vào như một câu trả lời với hy vọng rằng ai đó sẽ được hưởng lợi từ nó).

Tôi muốn đề nghị các tài liệu tham khảo sau:

Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: Đồ thị thay đổi theo thời gian và mạng động. IJPEDS 27 (5): 387-408 (2012)

Δ . Hoặc, các cạnh không tuân theo bất kỳ mẫu định kỳ nào nhưng chúng sẽ hiển thị tại một số điểm của quá trình thực thi thuật toán. - và có khoảng 9 lớp trong tổng số.

Điều thực sự quan trọng của phân loại này là có các mối quan hệ bao gồm giữa các lớp khác nhau. Vì vậy, nếu bạn giải quyết một vấn đề trong một lớp nhất định, bạn sẽ giải quyết nó trong mọi lớp khác mà nó được đưa vào.

Các tác giả tương tự đã trình bày các thuật toán phát sóng trên một số biểu đồ được đề cập. Họ đã đưa ra các số liệu hiệu suất khác nhau liên quan đến thời gian (nghĩa là định nghĩa khác nhau về thời gian ngắn nhất). Trong phát sóng, ý tưởng là mỗi nút xây dựng một khung nhìn của mạng trong miền thời gian. Điều này được thực hiện bằng cách liên tục lắng nghe hàng xóm và gửi thông tin cho hàng xóm. Nếu giả sử định kỳ, thì một nút có thể cho biết đường dẫn thời gian ngắn nhất đến nút khác là gì. Nó sử dụng thông tin này trong định tuyến. Thông tin chi tiết có thể được tìm thấy trong:

Arnaud Casteigts, Paola Flocchini, Bernard Mans, Nicola Santoro: Tính toán quyết đoán trong đồ thị biến đổi theo thời gian: Phát sóng dưới sự cơ động không có cấu trúc. IFIP TCS 2010: 111-124

bạnv{(bạn,x1),(x1,x2),....,(xk,v)}bạnvvbạn.

Tôi đã tham dự một bài giảng của các tác giả trước. Theo hiểu biết của tôi, họ cho rằng chúng ta còn lâu mới có thể đối phó với các thuật toán đồ thị động (theo các định nghĩa mà chúng tuân theo). Rằng chúng ta vẫn còn trong trường hợp của các lớp đơn giản. Trên thực tế, họ cho rằng hầu hết các thuật toán điện toán di động chỉ cho rằng thuật toán của họ quá nhanh để được thực thi trong khi mạng đang trong quá trình chuyển đổi! (mà tôi tin rằng tôi đã nghe thấy rất nhiều) - Hoặc đơn giản, giả sử tính chu kỳ của sự xuất hiện các cạnh (xem các mạng dung sai độ trễ, v.v.)

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.