Tôi đã xem qua các câu hỏi tương tự nhưng không thể tìm thấy bất kỳ điều gì liên quan đến vấn đề của tôi. Tôi đang loay hoay tìm một thuật toán hoặc bộ 'vòng' rằng sẽ tìm thấy một con đường CityA
-CityB
, sử dụng một cơ sở dữ liệu củaNhân Viên Bán Hàng Du Lịch Đơn Giản trong Prolog
distance(City1,City2,Distance)
sự kiện. Những gì tôi đã quản lý để làm cho đến nay là dưới đây, nhưng nó luôn luôn backtracks tại write(X),
và sau đó hoàn thành với iteration cuối cùng, đó là những gì tôi muốn nó làm nhưng chỉ đến một mức độ nhất định.
Ví dụ: tôi không muốn nó in ra bất kỳ tên thành phố nào là kết thúc chết hoặc sử dụng lặp lại cuối cùng. Tôi muốn nó về cơ bản tạo một con đường từ CityA
đến CityB
, viết tên của các thành phố mà nó đi vào đường dẫn.
Tôi hy vọng ai đó có thể giúp tôi!
all_possible_paths(CityA, CityB) :-
write(CityA),
nl,
loop_process(CityA, CityB).
loop_process(CityA, CityB) :-
CityA == CityB.
loop_process(CityA, CityB) :-
CityA \== CityB,
distance(CityA, X, _),
write(X),
nl,
loop_process(X, CityB).
Bạn thưa bạn, đã đi trên và vượt ra ngoài các cuộc gọi của nhiệm vụ! Điều này thật đáng kinh ngạc, nó hoàn hảo và nó thực sự có ý nghĩa! Xin lỗi tôi là một giả, tôi thực sự mới để prolog và trong khi khá nhiều của nó đã đến rất tự nhiên tôi đã thực sự đấu tranh với nhiệm vụ này. Cảm ơn bạn rất nhiều vì vậy sooooo nhiều:] –
đừng ngần ngại gửi câu hỏi thêm nếu bạn đấu tranh một lần nữa để hiểu mã này, tôi hoặc những người khác sẽ trả lời chúng trong ý kiến :) – m09