Có một thuật toán lực lượng không vũ phu cho Eulerization của đồ thị?


7

Với một số đồ thị không có hướng, không có trọng số, được kết nối và có khả năng song song , một mạch Euler có thể được xây dựng nếu mỗi đỉnh trong có một mức độ chẵn.GG

Trong các biểu đồ có hai hoặc nhiều đỉnh có mức độ lẻ (chỉ có thể có bội số của hai), người ta phải "Đánh giá" biểu đồ, kết nối các đỉnh lẻ với các cạnh bổ sung thông qua các đỉnh khác nếu cần.

Trường hợp tối ưu cho Eulerization là với việc xây dựng chỉ cạnh, trong đó là số đỉnh bậc lẻ, nhưng đây chỉ có thể là trường hợp nếu mỗi đỉnh lẻ có một đối tác liền kề, do đó cho phép chúng ta kết nối cả hai đỉnh với một cạnh và làm cho cả hai thậm chín/2n

Điều đó đang được nói, hầu hết các đồ thị sẽ yêu cầu nhiều hơn cạnh. Là con người, chúng ta có xu hướng Euler hóa đồ thị bằng cách luôn chọn từng cặp đỉnh lẻ liền kề nhau, sau đó sử dụng thử và lỗi cho phần còn lại. Tuy nhiên, điều này không phải lúc nào cũng hoạt động.n/2

Chẳng hạn, trong biểu đồ sau, việc chọn thêm một cạnh giữa cặp đỉnh lẻ liền kề, và sử dụng cạnh để kết nối dẫn đến Eulerization có giá cạnh. Tuy nhiên, lựa chọn thay thế kết nối và mang lại một Eulerization có giá cạnh, mặc dù nó không sử dụng các đỉnh lẻ liền kề với lợi thế của nó.12534614235

Đồ thị được tạo bởi MMA

Tôi biết chắc chắn rằng vấn đề này có thể giải quyết được, ít nhất là bằng sức mạnh vũ phu, bởi vì số lượng các cặp đỉnh lẻ nên được kết nối với một số số cạnh là hữu hạn; cụ thể, có ( Mathicala đã nói như vậy ) các cặp đỉnh lẻ có thể kết nối. Bạn có thể đi qua từng đỉnh, liên kết từng đỉnh với đối tác của mình (tìm đường đi ngắn nhất giữa hai đỉnh trong đồ thị không xác định có lẽ là một thách thức trong chính nó, mà Wikipedia không đưa ra được độ phức tạp về thời gian ).2n/2Γ(n+12)/π

Cuối cùng, toàn bộ thỏa thuận có thể chạy trong thời gian đa thức theo thời gian theo cấp số nhân, điều này khá khó chịu. Tôi đã thực hiện một số nghiên cứu cơ bản về việc có các thuật toán mà Euler hóa các đường dẫn, nhưng dường như không thể tìm thấy bất kỳ thuật toán nào.

toán học cho đồ họa:

GraphPlot[
  {1 -> 2, 2 -> 5, 5 -> 3, 3 -> 6, 6 -> 3, 6 -> 7, 7 -> 6, 2 -> 7, 7 -> 8, 8 -> 9, 9 -> 10, 10 -> 4, 4 -> 11, 11 -> 4, 11 -> 12, 12 -> 1, 1 -> 12}, 
  VertexRenderingFunction -> 
    (If[#2 < 5, 
        Text[Style[#2, Large], #1, Background -> Yellow], Null] &)]

Tôi nghĩ rằng nếu có các đỉnh lẻ , thì số lượng các cặp có thể sẽ là . 2k(2k)!(k!)22!
Paresh

@Paresh nếu chúng ta để có đỉnh lẻ, có lựa chọn cho cặp đầu tiên, sau đó tiếp theo, v.v. bất cứ điều gì MMA nói . nn1n3k=1n/22k1=
VF1

Hmm ... có vẻ tốt. Lỗi của tôi.
Paresh

Câu trả lời:


5

Hãy xem xét vấn đề của người đưa thư Trung Quốc trên các đồ thị vô hướng: Đưa ra một đồ thị vô hướng , tìm mạch ngắn nhất của đồ thị di chuyển mọi cạnh ít nhất một lần. Bây giờ, nếu là Euler, thì mạch Euler là mạch ngắn nhất như vậy. Nếu không, một số cạnh sẽ được đi lại nhiều lần. Nói cách khác, một số cạnh sẽ được nhân đôi và mạch sẽ là Euler trên biểu đồ với các cạnh phụ này.GG

Bây giờ, để có được mạch ngắn nhất, sự trùng lặp cạnh phải được giảm thiểu. Điều này giống như vấn đề của bạn. Bạn cần tìm một đồ thị mới có tất cả các cạnh của và một vài cạnh song song bổ sung - càng ít cạnh càng tốt - để là Eulerian. Mỗi cạnh thêm trong tương ứng với thực tế là cạnh song song tương ứng của nó trong được truy cập một lần nữa trong một mạch hoàn chỉnh ngắn nhất của . Nói cách khác, "mức độ tối ưu hóa" tối ưu (tối thiểu) tương đương với vấn đề Người đưa thư Trung Quốc. Để giải thích rõ hơn về vấn đề này, hãy tham khảo Phần 4 (Vấn đề người đưa thư Trung Quốc) và Định nghĩa 11 (Eulerization, Eulerization tối thiểu) trong số nàyHGHHGGghi chú. May mắn thay, điều này có thể giải quyết được trong thời gian đa thức cho các đồ thị vô hướng.

Đối với vấn đề Người đưa thư Trung Quốc , Wikipedia có một giải pháp. Tôi mô tả một thuật toán khác từ Sổ tay thiết kế thuật toán của Steven Skiena [1]:

  1. Tìm các đường đi ngắn nhất giữa mỗi cặp đỉnh bậc lẻ trong : .GO(n3)
  2. Việc tìm tập hợp các đường dẫn ngắn nhất tốt nhất để thêm vào giúp xác định kết hợp hoàn hảo có trọng số tối thiểu trong biểu đồ đặc biệt . Các đỉnh của tương ứng với các đỉnh lẻ độ của , với trọng lượng của cạnh định nghĩa là chiều dài của con đường đi ngắn nhất từ tới trong . Lưu ý rằng một kết hợpGG=(V,E)VGG(i,j)EijGlà một tập hợp các cạnh không liền kề. Do đó, mỗi cạnh trong khớp nối sẽ kết nối hai đỉnh và không có đỉnh nào là một phần của hai khớp (một đỉnh khớp được khớp với chính xác một đỉnh khác). Một kết hợp hoàn hảo là một kết hợp trong đó mỗi đỉnh đã được khớp. Bây giờ, đối với mỗi cạnh phù hợp thu được, bạn có thể xem xét hai đỉnh kết thúc được ghép nối. Ràng buộc của "trọng lượng tối thiểu" khi có được khớp phù hợp đảm bảo rằng tổng trọng lượng của mỗi cạnh trong khớp khớp càng nhỏ càng tốt. Vì trọng lượng của mỗi cạnh là khoảng cách giữa các điểm cuối của nó trongG, đến lượt nó là số cạnh cần được nhân đôi khi các điểm cuối được ghép nối - điều kiện này đảm bảo rằng trên toàn cầu, tổng số lần sao chép cạnh được giảm thiểu. Có được kết quả khớp như vậy được mô tả trong [2] và dựa trên thuật toán Blossom . Một triển khai hiệu quả được mô tả bởi Kolmogorov [3] ( bản in sẵn ) với một triển khai ở đây . Việc thực hiện là một sự cải tiến về các ý tưởng và đánh giá được trình bày bởi Cook và Rohe trong [4]. Điều này có thể được thực hiện .O(n3)
  3. Sau khi có được sự trùng khớp, mỗi đỉnh lẻ được ghép với một đỉnh lẻ khác. Đây là cặp đôi mà bạn muốn.

Do đó, bạn có thể có được "Eulerization" tối ưu trong đa thức thời gian (khối) trong số lượng đỉnh lẻ. Điều này dựa trên một bài báo của Edmonds và Johnson [2] để giải quyết vấn đề người đưa thư Trung Quốc.

Người giới thiệu:

  1. Steven S. Skiena. Hướng dẫn thiết kế thuật toán. ISBN: 980-1-84800-069-8 e-ISBN: 980-1-84800-070-4 và DOI: 10.1007 / 978-1-84800-070-4
  2. J. Edmonds và E. Johnson. Phù hợp, tour du lịch Euler, và người đưa thư Trung Quốc. Lập trình toán học, 5: 88 Hàng24, 1973.
  3. Vladimir Kolmogorov. Blossom V: Một triển khai mới của thuật toán kết hợp hoàn hảo với chi phí tối thiểu. Trong tính toán lập trình toán học (MPC), tháng 7 năm 2009, 1 (1): 43-67.
  4. W. Cook và A. Rohe. Tính toán kết hợp hoàn hảo trọng lượng tối thiểu. INFORMS Tạp chí điện toán, 11 (2): 138 Chân148, tháng 2/1999.

Đối với thuật toán đường dẫn ngắn nhất trong bước (1), bạn có đang đề cập đến Floyd-Warshall không? O(n3)
VF1

1
@ VF1 Có. Mặc dù một cái gì đó giống như BFS từ mọi nút cũng sẽ hoạt động do đồ thị không có trọng số.
Paresh

Cảm ơn câu trả lời. Tất cả những gì có ý nghĩa trong thuật toán mô tả của bạn, ngoại trừ những gì bạn làm sau khi bạn nhận được trọng vô hướng đồ thị đầy đủ của . Làm thế nào để bạn chọn từng cặp? GG
VF1

@ VF1 Bạn tìm thấy kết hợp hoàn hảo trọng lượng tối thiểu trên . Điều này có nghĩa là một kết quả khớp được lấy, sao cho tất cả các đỉnh được 'khớp' với một số đỉnh khác (khớp hoàn hảo). Đây là ghép nối - mọi đỉnh được khớp với chính xác một đỉnh khác thông qua cạnh khớp. "Trọng lượng tối thiểu" ngụ ý là tổng trọng lượng của các cạnh của khớp được giảm thiểu. Điều này về cơ bản có nghĩa là tổng khoảng cách giữa mỗi cặp đỉnh khớp được giảm thiểu. Tôi sẽ cập nhật câu trả lời của tôi với nhiều chi tiết hơn. G
Paresh

Cảm ơn. Tôi hiểu rằng việc kết hợp hoàn hảo trọng lượng tối thiểu của là cần thiết, nhưng tôi muốn tìm hiểu chính xác cách thức thực hiện. G
VF1
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.