Là sự phức tạp của vấn đề con đường này được biết đến?


9

Sơ thẩm: Một đồ thị vô hướng có hai đỉnh phân biệt và một số nguyên .s t k 0Gstk0

Câu hỏi: Có tồn tại một đường trong , sao cho đường đó cắt nhau nhiều nhất là tam giác? (Đối với vấn đề này, một đường dẫn được cho là cắt một tam giác nếu đường dẫn chứa ít nhất một cạnh từ tam giác.)GS-tGk


3
Điều này có sai không? Chúng tôi gán trọng lượng cho mỗi cạnh và sau đó chúng tôi tìm thấy đường st ngắn nhất. Trọng lượng của mỗi cạnh là số lượng hình tam giác bao gồm cạnh đó. Trọng lượng của đường dẫn này không bằng số lượng tam giác mà nó gặp nhưng đó là đường dẫn thứ nhất có số lượng tam giác tối thiểu. (Vấn đề có thể xảy ra là chúng ta có thể đếm một hoặc nhiều tam giác hai lần vì chúng ta truy cập hai cạnh của tam giác đó nhưng lý do chúng ta chọn chúng là chúng nhỏ hơn so với đi qua cạnh kia của tam giác và chúng ta cũng có nghĩa là đường đi đơn giản hai cạnh của một hình tam giác nằm cạnh nhau).
Saeed

3
@Saeed Tôi không hiểu: đối số vượt quá không khiến bạn chọn đường dẫn tối ưu là gì? Thuật toán của bạn chắc chắn là xấp xỉ 2. Có lẽ cách khắc phục là thêm một cạnh cho mọi đường dẫn với trọng số bằng số tam giác chứa cả vàu v w ( u , v ) ( v , w )(bạn,w)bạnvw(bạn,v)(v,w)
Sasho Nikolov

2
Phải, chúng ta có thể đi từ u đến v và sau đó chúng ta chọn x (một số nút khác không nằm trong tam giác uvw) sau đó chúng ta đi đến w sai (lỗi của tôi là tôi đã bỏ lỡ giữa các đỉnh không nằm trong tam giác uvw) , nhưng với cách khắc phục của bạn, điều đó là chính xác bởi vì với mỗi đường dẫn thứ ba có tam giác trong biểu đồ ban đầu, có một đường dẫn có trọng số trong biểu đồ phụ trợ. Hơn nữa, trọng số của đường dẫn trong biểu đồ mới luôn luôn ít nhất là số lượng tam giác trong đường dẫn tương ứng trong biểu đồ ban đầu. alphaαα
Saeed

1
Tôi suy nghĩ thêm một chút về nó, ngay cả sau khi sửa nó cũng không hoạt động. Xin lỗi Andras nếu tôi mang một hy vọng sai lầm. Để xem tại sao sửa sai, hãy xem xét các đỉnh trong một đường dẫn và chúng ta có một tam giác và và giả sử các cạnh và là sự cố cho quá nhiều tam giác . Nếu chúng ta sử dụng cạnh mới nhân tạo kết nối thì chúng ta đã đếm tam giác hai lần. PS: Lý luận của tôi một lần nữa là sai bởi vì tôi nghĩ rằng chúng ta chỉ cần thay thế và bằng cạnh mới (đa)P u , v , w v , w , x v x u w u - > w v , w , x u - > v v - > w u - > wbạn->v->w->xPbạn,v,wv,w,xvxuwu>wv,w,xu>vv>wu>w. Nếu chúng ta thêm các cạnh nhân tạo đó cho mọi đường dẫn thì nó sẽ hoạt động không đáng kể. Có vẻ đó là NPC.
Saeed

1
Ý tưởng của tôi sẽ không hiệu quả - Tôi cần duy trì nhiều bộ và tôi nghĩ sẽ có quá nhiều bộ.
rebierpost

Câu trả lời:


1

Giả sử không có tự cạnh trong .G

Đối với mỗi cạnh giữa nút và trong , hãy để và nếu không có cạnh. Tính ma trận , đưa ra số lượng đường dẫn hai bước giữa mỗi cặp nút và . Sau đó, cho cạnh giữa và trong tính nếu không đặt , sẽ cho số lượng tam giác cạnh là một phần của (hoặc vô cực nếu không có cạnh). Phép nhân ma trận cần thiết để tính toánv j G E [ i , j ] = 1 E [ i , j ] = 0 n × n C [ i , j ] = n k = 1 E [ i , k ] E [ k , j ] v i v j v i v j G D [ ivivjGE[i,j]=1E[i,j]=0n×nC[i,j]=k=1nE[i,k]E[k,j]vTôivjvTôivjGD [D[Tôi,j]= =E[Tôi,j]C[Tôi,j]C O ( n 3 ) GD[Tôi,j]= =C chi phí (có thể được tính nhanh hơn tùy thuộc vào độ thưa của ).Ôi(n3)G

Bây giờ hãy tính ma trận , sao cho . là tất cả các đường dẫn ngắn nhất trong có độ dài lên đến hai lần tăng để tính các đường đi dọc theo hai cạnh của một số tam giác.A A [ i , j ] = min ( D [ i , j ] , min k ( D [ i , k ] + D [ k , j ] - En×nMộtA DA[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]E[i,j]))AD

Bây giờ chỉ cần tính toán đường đi ngắn nhất giữa và trong trên biểu đồ mới trong đó là ma trận kề (có trọng số) sử dụng Dijkstra (vì tất cả các trọng số cạnh đều dương) và xác định xem , trong đó là kết thúc của nửa cung nhiệt đới (cung cấp ma trận khoảng cách).v j G Một Một * [ i , j ] k Một *vivjGAA[i,j]kA*

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.