Tôi đang cố gắng ánh xạ DAG (Đồ thị tuần hoàn hướng) vào cấu trúc tôi hiển thị bên dưới.Mẫu hoặc thuật toán hợp nhất các nhánh trong cấu trúc cây?
Dưới đây là một ví dụ về DAG tôi bắt đầu từ
nơi cung luôn đi từ trái sang phải.
sau đó tôi trở lại đồ thị và span nó vào một cái cây với các nút lặp đi lặp lại như thế này:
Những gì tôi đang tìm kiếm một số thuật toán hoặc mẫu để đạt được cơ cấu sáp nhập sau đây là. (Lưu ý nó được quay trở lại)
Mục đích là để tạo ra một XML như thế này:
<root>
<seq>
<mod1/>
<flow>
<seq>
<mod4/>
<mod7/>
</seq>
<seq>
<flow>
<seq>
<flow>
<mod4/>
<mod3/>
</flow>
<mod6/>
</seq>
<seq>
<flow>
<mod4/>
<mod3/>
<mod2/>
</flow>
<mod5/>
</seq>
</flow>
<mod8/>
</seq>
</flow>
</seq>
</root>
Tôi không nghĩ rằng nó có liên quan nhưng tôi phân tích cú pháp JSON để viết một XML với JAVA 7. Các hộp là các dịch vụ web và các mũi tên đại diện cho các tham số đầu vào và đầu ra, ví dụ, Mô-đun 5 được gọi là Mô-đun 1,2,3 và 4 đã hoàn thành và đầu ra của chúng là đầu vào của nó.
EDIT: Ok, đây là một ví dụ khác với mười nút. Tôi hy vọng điều này sẽ mang lại cho bạn một sự đánh giá cao hơn khi các nút của tôi được hợp nhất.
Để trả lời @blubb, trong ví dụ này chúng ta có thể xem như thế nào "dịch vụ" 8 & 9 cũng đã được sáp nhập. Nếu không, tất cả các dịch vụ mà họ cần để làm việc (1,2,3,4,5 và 6) sẽ được gọi hai lần mà không cần. Nhánh giữa trong bản phác thảo cuối cùng sẽ được thực hiện hai lần: một lần cho 8 và một lần cho 9.
Bạn có thể mở rộng đoạn cuối cùng một chút không? Tôi nghĩ rằng nó sẽ giúp rất nhiều để hiểu vấn đề rõ ràng hơn. – blubb
Ảnh thứ 2 và thứ 3 - chúng trông giống như bạn chỉ "hợp nhất" tất cả 1 nút thành một nút 1, đúng không? –
Ngoài ra: Bạn có thể giải thích lý do tại sao bạn đang 'hợp nhất' ba nút 1 2,3,4 đồng thời, nhưng không phải với hai nút 1 và 3? – blubb