Tìm ít nhất hai đường dẫn có cùng độ dài trong đồ thị có hướng


20

Giả sử chúng ta có một đạo diễn đồ thị và hai nút và . Tôi muốn biết nếu đã có thuật toán để tính toán vấn đề quyết định sau:A BG=(V,E)AB

Có ít nhất hai đường dẫn giữa và có cùng độ dài không?BAB

Làm thế nào về sự phức tạp? Tôi có thể giải quyết nó trong thời gian đa thức?


Tôi muốn thêm một ràng buộc mới trên biểu đồ, có thể vấn đề sẽ dễ giải quyết hơn. Trên ma trận kề, mỗi cột không trống. Vì vậy, mỗi nút có ít nhất một mũi tên trên đầu vào và cũng có ít nhất một nút được kết nối với chính nó. Vì vậy, nếu nút là nút thứ , thì là một cạnh trong biểu đồ.( tôi , tôi )i(i,i)


Ý bạn là những con đường đơn giản? (truy cập mỗi nút nhiều nhất một lần), Ngoài ra họ có được phép có một nút nội bộ chung không?

1
không, không có giới hạn về đường dẫn bạn có thể lặp, nếu bạn muốn.
Paolo Parisen T.

Quan sát dễ dàng là thế này: nếu chỉ có một đường dẫn đơn giản giữa và đường dẫn đơn giản này được kết nối với tối đa một vòng lặp, bạn có thể chỉ cần nói , Nếu có ít nhất hai vòng có độ dài khác nhau được kết nối với đường dẫn đơn giản này , bạn có thể nói có, .... (Tôi nghĩ những điều tương tự là hữu ích và bạn có thể chứng minh điều đó), nhưng trong trường hợp tách rời các đường dẫn đơn giản (nếu trong quá trình chứng minh điều này bạn gặp phải để tách rời các đường dẫn đơn giản), đó là NPC. N oA,BNo

1
@mrm: Tôi không thấy đây là một bản sao. Yêu cầu tất cả các lần đi bộ là một hoạt động tiêu tốn thời gian ồ ạt (nói chung, có vô số lần đi bộ), trong khi OP yêu cầu hai con đường (đơn giản), không phải tất cả các bước đi.
Dave Clarke

Câu trả lời:


10

Hãy xem xét một đồ thị , chúng tôi muốn biết nếu có hai đường dẫn khác nhau từ đến có cùng độ dài. Phải làm sao Đơn giản: mã hai đường dẫn trong một. Xác định đồ thị với các đỉnh . Bạn thực hiện một bước trong bằng cách làm cho hai bước độc lập trong . Bit bổ sung cho bạn biết liệu hai đường dẫn đã tách ra khỏi nhau chưa.A B G V × V × { 0 , 1 } G GGABGV×V×{0,1}GG

Chính thức, có một cạnh trong iff , trong và .G i i j j G e = e ( i , i ) ( j , j )(i,j,e)(i,j,e)GiijjGe=e(i,i)(j,j)

Thuật toán kiểm tra nếu có một đường dẫn đến trong , đó là , hoặc một cái gì đó như .( B , B , 1 ) G O ( V 4 ) O ( ( V + E ) 2 )(A,A,0)(B,B,1)GO(V4)O((V+E)2)

Nếu bạn đồng ý thuật toán này là chính xác thì, do đó, đường dẫn trong có độ dài tối đa là , do đó, "va chạm đường dẫn" tiềm năng phải xảy ra muộn nhất ở độ dài đó. Bạn có thể nhận được thuật toán từ quan sát này, trong đó là độ phức tạp nhân ma trận (hỏi xem bạn có cần một spoiler ...) không. 2 n 2 O ( V ω log V ) ωG2n2O(VωlogV)ω

Tôi cảm thấy mạnh mẽ có một thuật toán , sử dụng nhiều cấu trúc của vấn đề.O(V+E)


3
Thật thanh lịch.
Raphael

4

Có lẽ tôi đã có câu trả lời cho vấn đề này, nhưng tôi không chắc chắn rằng nó hoạt động.

Không quan trọng là "tìm" hai con đường, điều quan trọng duy nhất là "biết" nếu chúng tồn tại hay không. Tôi không nghĩ rằng đây là một vấn đề hoàn chỉnh NP.

Vì vậy, đi ma trận kề . Chúng ta có thể dễ dàng cho rằng nó chứa đầy 0,1 giá trị. (0 = không có cạnh; 1 = có cạnh) Hãy sử dụng đại số sau với 3 giá trị (0,1,2), trong đó mọi thứ hoạt động như bình thường ngoại trừ: 2 + <Something> = 2 ; 2 * <bất cứ điều gì lớn hơn 0> = 2A2+<something>=22<whatever greater than 0>=2

Vì vậy, nếu có hai đường dẫn có cùng độ dài từ tôi đang mong đợi rằng có một giá trị p sao cho ( A p ) i , j = 2 .i,jp(Ap)i,j=2

Gọi là số đỉnh trong biểu đồ (hoặc giả sử A có kích thước n × n ). Tôi không biết giá trị của p , nhưng nếu tôi lặp lại A bằng cách nhân với tối đa n 2 thì tôi sẽ tìm thấy câu trả lời. (vì vậy, p < n 2 ) (ý nghĩa là tôi kiểm tra A , sau đó tôi kiểm tra A 2 , sau đó tôi kiểm tra A 3 và cứ thế ...)nAn×npAn2p<n2AA2A3

đây là lý lẽ của tôi:

  • Nếu hai đường dẫn là các đường dẫn đơn giản, tốt, nó hoạt động; nếu có, nhiều nhất tôi phải lặp lại lần.n
  • Nếu có ít nhất một chu kỳ được thực hiện hoặc có một đường dẫn có hai chu kỳ, tốt, tôi phải tìm bội số chung ít nhất (LCM). là một giá trị lớn hơn chắc chắn và trong ít hơn n 2 lần nếu có thì tôi phải tìm chúng.n2n2
  • Nếu hai con đường là hai con đường khác nhau, cả hai đều có một chu kỳ, sau đó nó ít nhiều tương tự như việc tìm kiếm một giải pháp cho hai phương trình này: , nơi mk là chiều dài của hai biệt những chu kỳ. Phép nhân ma trận A q , như được định nghĩa ở trên, nói rằng "có đường dẫn từ i đến j có độ dài là q không?" Vì vậy, nếu A q là vắt hơn 1 thì có nghĩa là có nhiều đường dẫn từ i đến j . Bằng cách lặp lại ma trận nα+βm=γ+δkmkAqijqAq1ij lần chúng tôi đi qua tất cả các kết hợp có thể có của δ β . Thật vậy, L C M ( a , b ) được định nghĩa là ( a b ) / G C D ( a , b ) và không có chu kỳ nào có thể lớn hơn n .n2δβLCM(a,b)(ab)/GCD(a,b)n

Tôi dừng lại để lặp lại khi tôi tìm thấy .(Ap)i,j=2

Tôi có lầm không?


Tôi đã thử tương tự và tôi gặp một số vấn đề / sự không chắc chắn: 1) Điều gì xảy ra nếu các đường dẫn được kết nối với nhiều hơn một chu kỳ? Bạn có phải "kiểm tra" tất cả các kết hợp (trong trường hợp xấu nhất, mọi nút nằm trên nhiều chu kỳ theo cấp số nhân!), Làm nổ tung giới hạn trên hoặc chỉ đủ để xem xét một cho mỗi kết hợp? 2) Do hằng số offsets γ , là LCM thực sự là một trên ràng buộc? αγ
Raphael

Nhân tiện, không cần phải có một đại số sôi nổi: chỉ cần dừng khoảnh khắc bạn tính toán dưới dạng ma trận. 2
Raphael

@Raphae 1) nếu có một đường dẫn có hai chu kỳ, thì chắc chắn có hai đường dẫn có cùng chiều dài. một vòng lặp trên chu kỳ đầu tiên và một vòng lặp thứ hai. họ phải lặp bao nhiêu? chính xác là LCM của chiều dài của cả hai chu kỳ. điều này được giới hạn bởi , trong đó n là số lượng đỉnh trong biểu đồ. 2) LCM là giới hạn trên (trong trường hợp 1)) vì LCM (a, b) được giới hạn bởi a * b cộng với αγ offset; như vậy, trong tổng số chúng ta có L C M ( một , b ) + α + γ < một * b + α + γn2nαγLCM(a,b)+α+γ<ab+α+γ. chúng ta biết rằng , vì vậy một * b + α + γ là ít hơn n 2 . α+γ+a+b<nab+α+γn2
Paolo Parisen T.
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.