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.
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í
Đ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.
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ó.

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 ).
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.
Mã 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] &)]