Tôi đang làm việc trên một hệ thống loại và gặp phải một vấn đề có vẻ giống với tổ tiên chung thấp nhất. Đưa ra hai loại, tôi cần tìm chuỗi chuyển đổi nhỏ nhất sẽ dẫn đến cùng loại mục tiêu. Nếu tôi có một loại cây đơn giản, tôi biết làm thế nào để có được kết quả, nhưng thật không may, tôi có một cấu trúc đồ thị phức tạp hơn một chút.
Biểu đồ đó có một vài điểm chính. Nó là đơn hướng và không có vòng lặp nào được hình thành. Do số lượng không giới hạn của các loại tuy nhiên nó không thể được sản xuất tĩnh. Khoảng cách của một con đường nói chung là khá thấp. Nó "cảm thấy" giống như một cái cây với một loạt các cạnh tắt.
Ban đầu tôi nhìn vào tổ tiên chung thấp nhất, nhưng nó chủ yếu được mô tả như một thuật toán cây. Tôi vẫn chưa từ bỏ hy vọng rằng tôi có thể thích nghi với nó. Khả năng khác sẽ là một thuật toán tìm đường dẫn chung hơn.
Tôi hy vọng ai đó đã nhìn thấy vấn đề này trước đây, hoặc một vấn đề tương tự, và có thể cho tôi một số tài liệu tham khảo về cách tiếp cận nó. Dường như đủ quen thuộc để tôi cho rằng một cái gì đó phải tồn tại và tôi chỉ đang tìm kiếm các thuật ngữ / tên sai.
Đây là nỗ lực của tôi để mô tả điều này chính thức hơn.
Đặt biểu đồ sao cho mỗi đỉnh có một tập hợp các cạnh đi . Lưu ý, vì biểu đồ là động, có thể là vô hạn, không có cách nào để xây dựng biểu mẫu cho toàn bộ biểu đồ.
Một đường dẫn được hình thành từ một đỉnh bằng cách theo bất kỳ cạnh nào có sẵn từ nút đó. . Độ dài của đường dẫn này bằng với số đỉnh trong chuỗi. Không có chu kỳ có thể. Tập hợp tất cả các đường dẫn giữa hai nút được biểu thị là .
Lưu ý rằng có thể được xác định là trống trong một số bước hữu hạn. Việc liệt kê toàn bộ bộ là không thực tế.
Vấn đề là tìm đường đi ngắn nhất từ hai đỉnh đến đỉnh thứ ba. Nghĩa là, đã cho , tìm sao cho các đường dẫn và tồn tại và là tối thiểu.
java.lang.Object