Độ phức tạp thời gian của việc tìm đường kính của đồ thị


27

Độ phức tạp thời gian của việc tìm đường kính của đồ thị G=(V,E) gì?

  • O(|V|2)
  • O(|V|2+|V||E|)
  • O(|V|2|E|)
  • O(|V||E|2)

Đường kính của đồ thị là cực đại của tập hợp khoảng cách đường đi ngắn nhất giữa tất cả các cặp đỉnh trong đồ thị.G

Tôi không biết phải làm gì về nó, tôi cần một phân tích đầy đủ về cách giải quyết vấn đề như thế này.


4
Xin hãy giải thích một chút. Tại sao vấn đề này quan tâm đến bạn? Bạn có cần một gợi ý, một phân tích đầy đủ hoặc một tài liệu tham khảo? Bạn có quan tâm đến thời gian tồi tệ nhất hoặc trung bình? Là hướng dẫn? G
Raphael

@Raphael: Rõ ràng tôi không cần một gợi ý, tôi cần một phân tích đầy đủ. Tôi đã chỉnh sửa câu hỏi của tôi nào.
Gigili

1
@Gigili Bạn có nghĩa là trong mọi trường hợp, phải không? Mặt khác, tất cả đều bị giảm đi bởi khả năng cuối cùng (nằm trên biểu đồ chung bằng O ( | V | 5 ) ) làm cho nó trở thành một câu trả lời đúng, giả sử ít nhất một câu trả lời được cho là đúng. Một mối quan tâm bổ sung là trong một biểu đồ có chu kỳ, không có con đường dài nhất. "Khoảng cách xa nhất" có nghĩa là gì? ΘO(|V|5)
Raphael

@Gigili Bốn lựa chọn đến từ đâu?
uli

Câu trả lời:


5

Cập nhật:

Giải pháp này không đúng.

Thật không may, giải pháp chỉ đúng (và đơn giản) cho cây! Tìm đường kính của cây thậm chí không cần điều này. Đây là một ví dụ cho đồ thị (đường kính là 4, thuật toán trả về 3 nếu bạn chọn này ):v

nhập mô tả hình ảnh ở đây


Nếu đồ thị được định hướng thì điều này khá phức tạp, đây là một số bài báo khẳng định kết quả nhanh hơn trong trường hợp dày đặc hơn là sử dụng thuật toán cho các đường dẫn ngắn nhất của tất cả các cặp.

Tuy nhiên, điểm chính của tôi là về trường hợp đồ thị không được định hướng và với các âm lượng không âm, tôi đã nghe về một mẹo hay nhiều lần:

  1. Chọn một đỉnh v
  2. Tìm sao cho d ( v , u ) là cực đạiud(v,u)
  3. Tìm sao cho d ( u , w ) là tối đawd(u,w)
  4. Trả về d(u,w)

Độ phức tạp của nó giống như hai lần tìm kiếm đầu tiên liên tiếp, đó là nếu biểu đồ được kết nối².O(|E|)

Có vẻ như văn hóa dân gian nhưng hiện tại, tôi vẫn đang cố gắng để có được một tài liệu tham khảo hoặc để chứng minh sự điều chỉnh của nó. Tôi sẽ cập nhật khi tôi đạt được một trong những mục tiêu này. Có vẻ như rất đơn giản, tôi đăng câu trả lời của mình ngay bây giờ, có thể ai đó sẽ nhận được nó nhanh hơn.

¹ nếu đồ thị có trọng số, wikipedia dường như nói nhưng tôi chỉ chắc chắn về O ( | E | log | V | ) .O(|E|+|V|log|V|)O(|E|log|V|)

² Nếu đồ thị không được kết nối, bạn nhận được nhưng bạn có thể phải thêm O ( α ( | V | ) ) để chọn một phần tử từ mỗi thành phần được kết nối. Tôi không chắc chắn nếu điều này là cần thiết và dù sao, bạn có thể quyết định rằng đường kính là vô hạn trong trường hợp này.O(|V|+|E|)O(α(|V|))


Để mkae Dijsktra hoạt động trong thời gian giới hạn được chỉ định, bạn cần sử dụng các đống Fibonacci, chứ không phải cách triển khai thông thường.
Suresh

8
Đây là câu trả lời sai hoàn toàn, thuật toán này là văn hóa dân gian nhưng trong cây không phải là đồ thị chung. Tái bút: Tôi có thể xem ví dụ phản biện của bạn, nhưng đó không phải là câu trả lời hay để được đánh dấu là câu trả lời.

Tôi có hai câu hỏi về giải pháp sai. 1. Điều này ít nhất sẽ đưa ra một phạm vi trong đó câu trả lời đúng phải là? ví dụ: nếu phương pháp tìm đường kính d , liệu giải pháp đúng có nằm trong khoảng từ d đến 2d không? 2. Điều gì xảy ra nếu chúng ta thêm một chỉ định khác và xem xét tất cả các nút được tìm thấy bởi một chỉ định (không chỉ một)? Ví dụ truy cập được đưa ra trong bài viết sẽ hoạt động sau đó, vì các đỉnh ngoại vi thực sự nằm trong số các nút được tìm thấy bởi chỉ định thứ hai.
mafu

32

Tôi giả sử bạn có nghĩa là đường kính của đó là con đường ngắn nhất dài nhất được tìm thấy trong G .GG

Tìm đường kính có thể được thực hiện bằng cách tìm tất cả các đường dẫn ngắn nhất trước và xác định độ dài tối đa được tìm thấy. Thuật toán Floyd-Warshall thực hiện điều này trong thời gian. Thuật toán Johnson có thể được thực hiện để đạt được O ( | V | 2 log | V | + | V || E | ) thời gian.Θ(|V|3)O(|V|2log|V|+|V||E|)

Một thời gian chạy trường hợp xấu nhất nhỏ hơn có vẻ khó đạt được vì có khoảng cách để xem xét và tính toán khoảng cách đó theo thời gian tuyến tính (khấu hao) mà mỗi lần sẽ khó khăn; xem ở đây cho một ràng buộc liên quan. Lưu ý này giấy trong đó sử dụng một cách tiếp cận khác nhau và có được một thuật toán (hơi) nhanh hơn.O(|V|2)


2
Nếu bạn nhận được paywalled trên các giấy tờ đó, hãy kiểm tra Google Scholar.
Raphael

Ngoài ra, ngoại lệ này đáng chú ý đối với các cây không bị ảnh hưởng , nơi bạn có thể lấy dia. chỉ với một dfs traversal.
azam

15

Bạn cũng có thể xem xét một phương pháp lý thuyết đồ thị đại số. Đường kính là số nguyên nhỏ nhất t ma trận M = I + Adiam(G)tM=I+A có thuộc tính rằng tất cả các mục nhập của đều khác không. Bạn có thể tìm thấy t bởi các phép lặp O ( log n ) của phép nhân ma trận. Thuật toán đường kính sau đó yêu cầu thời gian O ( M ( n ) log n ) , trong đó M ( n )MttO(logn)O(M(n)logn)M(n)là giới hạn cho phép nhân ma trận. Ví dụ, với việc khái quát hóa thuật toán Coppersmith-Winograd của Vassilevska Williams, thuật toán đường kính sẽ chạy trong . Để biết giới thiệu nhanh, xem Chương 3 trong cuốn sách của Fan Chung tại đây .O(n2.3727logn)

Nếu bạn hạn chế sự chú ý của mình vào một lớp biểu đồ phù hợp, bạn có thể giải quyết vấn đề APSP trong thời gian tối ưu . Các lớp này bao gồm ít nhất là đồ thị khoảng, đồ thị cung tròn, đồ thị hoán vị, đồ thị hoán vị lưỡng cực, đồ thị hợp âm mạnh, đồ thị lưỡng cực hợp âm, đồ thị di truyền từ xa và đồ thị hợp âm đôi. Ví dụ, xem Dragan, FF (2005). Ước tính tất cả các cặp đường dẫn ngắn nhất trong các họ đồ thị bị hạn chế: một cách tiếp cận thống nhất. Tạp chí thuật toán, 57 (1), 1-21 và các tài liệu tham khảo trong đó.O(n2)


2
Điều đáng chú ý là thuật toán này chỉ hoạt động trong trường hợp không có trọng số.
GMB

-2

Giả định:
1. Đồ thị không có trọng số
2. Đồ thị được định hướng

Độ phức tạp thời gian O (| V | | E |).

Thuật toán:

ComputeDiameter(G(V,E)):
  if ( isCycle( G(v,E) ) ) then
     return INFINITY
  if ( not isConnected( G(V,E) )) then
     return INFINITY
  diameter = 0
  for each vertex u in G(V,E):
     temp = BFS(G,u)
     diameter = max( temp , diameter )
  return diameter

Giải thích:
Chúng tôi kiểm tra chu kỳ. nếu đồ thị chứa chu kỳ thì chúng ta tiếp tục di chuyển trong vòng lặp, vì vậy chúng ta sẽ có khoảng cách vô hạn. Chúng tôi kiểm tra kết nối. Nếu đồ thị không được kết nối có nghĩa là đỉnh u từ G1 đến đỉnh v trong G2. Trong đó G1 và G2 là hai biểu đồ con không được kết nối. Vì vậy, chúng ta sẽ có khoảng cách vô hạn một lần nữa. Chúng tôi sẽ sử dụng BFS để tính khoảng cách tối đa giữa một nút (u) nhất định với tất cả các nút khác (v) có thể truy cập từ u. Sau đó, chúng tôi sẽ lấy tối đa đường kính tính toán trước đó và kết quả trả về bằng BFS. Vì vậy, chúng tôi sẽ có đường kính tối đa hiện tại.

Thời gian chạy phân tích:

  1. O (| E |) sử dụng DFS
  2. O (| E |) sử dụng DFS
  3. BFS chạy trong thời gian O (| E |).
  4. Chúng ta phải gọi hàm BFS cho mỗi đỉnh nên tổng thời gian sẽ mất O (| V | | E |).

Tổng thời gian = O (| v | | E |) + O (| E |) + O (| E |)
Vì | V | | E | > | E |
vì vậy chúng ta có thời gian chạy là O (| v | | E |).

BFS
DFS

Lưu ý: Đây không phải là một giải pháp tao nhã cho vấn đề này.


Các đồ thị được kết nối theo chu kỳ là các cây, trong đó vấn đề dễ dàng hơn (vì đường kính sau đó được đưa ra bởi con đường dài nhất). Nó đã được xử lý ở đâyđây , nơi các thuật toán nhanh hơn được đưa ra. (Một giao dịch đệ quy hoặc, thay thế, hai BFS là đủ.)
Raphael

1
@Raphael Không, đồ thị vô hướng acyclic là cây. DAG là DAG.
David Richerby

@DavidR Richby Phải. (Mặc dù, về mặt kỹ thuật, câu trả lời không nói nếu nó loại trừ các chu kỳ được định hướng hoặc không được định hướng .;)) Dù sao, đây không là gì ngoài việc giải quyết APSPP (cách tiếp cận ngây thơ), đã được đưa ra cho trường hợp chung bằng các câu trả lời trước.
Raphael

@Raphael Bạn có chắc đồ thị Acyclic là cây không? Đồ thị là Acyclic không có nghĩa là đồ thị sẽ luôn là cây. Cây chỉ là một trường hợp đặc biệt của điều này. Ngoài ra, đây là thuật toán chuyển tiếp thẳng và độ phức tạp thời gian là O (| V || E |).
sonus21

Vâng tôi chắc chắn. (Có thể bạn đang nghĩ về những cây có rễ , đó là một hương vị khác.)
Raphael
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.