Đếm tất cả các đường dẫn có thể, hoặc tất cả các đường dẫn có thể có độ dài nhất định, giữa một vài nút trong biểu đồ có hướng hoặc không có hướng là một vấn đề cổ điển. Cần chú ý đến tất cả các phương tiện, do các chu kỳ sở hữu.
Câu hỏi này hơi khác nhau, hoặc ít nhất là tôi nghĩ.
INPUT: Be G một đồ thị có hướng. G có thể có chu kỳ và các nút tự kết nối. Đặt A (G) là ma trận kề của G (với 1 trong G i, j nếu có một liên kết đi từ i đến j và 0 khác). Xác định T và B hai tập con của các nút của G , có thể có giao điểm void.
KẾT QUẢ: Một danh sách của tất cả các con đường có độ dài tối đa là k đi từ một nút trong T với một nút trong B . Các đường dẫn có thể chứa nhiều thời gian các cạnh giống nhau, miễn là chúng đi từ nút nguồn đến nút đích theo đúng ít hơn k + 1 bước.
HỎI: Tôi muốn biết thuật toán nào thực hiện tốt nhất trong nhiệm vụ này. Tôi đang cố gắng phát triển một câu trả lời có thể dựa trên thực tế là sức mạnh thứ n của ma trận kề, nếu được tính toán một cách tượng trưng (với một biến khác nhau cho mỗi mục thay vì 1), hãy theo dõi tất cả các đường dẫn này (và nó giảm việc đếm các đường dẫn nếu được tính bằng số với 1 trong các mục). Nhưng tôi thực sự không biết liệu đây có phải là cách nhanh nhất để thực hiện nhiệm vụ (có thể không).
CAVEAT: Tôi không yêu cầu vấn đề đếm, cũng như đối với các đường dẫn ngắn nhất, độ dài của một đường dẫn được xác định là số cạnh được sử dụng (đếm số lần lặp lại). Tôi đang sử dụng R, nhưng nếu bạn thích nghĩ về nó bằng bất kỳ ngôn ngữ nào khác! Tôi thực sự xin lỗi nếu câu hỏi đã được đặt ra và giải quyết. Cảm ơn bạn đã giúp đỡ!
Thông tin bổ sung: Tôi đã thử một cách tiếp cận chuỗi ma trận (A ^ 3 cho cả 3 đường dài, ...) và dfs / bfs. Tôi nghĩ rằng hai thứ hai không còn lạc quan nữa vì chúng không tính đến việc tôi đang làm việc trên các bộ nguồn và mục tiêu, và do đó thực hiện rất nhiều công việc dư thừa ...