Итак, я пытаюсь выучить Пролог как рекомендацию друга в моем начальном путешествии по искусственному интеллекту, это становится очень трудным, и я не могу найти какое-либо подобное решение здесь, в стеке, поэтому я решил спросить, я работаю со списком списки, в этих списках сохраняются полеты самолетов, которые доступны в городском аэропорту, от X до Y, с заданным расстоянием, моя база знаний выглядит примерно так:
airports([culiacan,mazatlan,chihuahua,guadalajara,df]).
flightdistance([[culiacan,mazatlan,5],[culiacan,chihuahua,6],[mazatlan,chihuahua,5],
[mazatlan,guadalajara,7],[chihuahua,culiacan,6],[chihuahua,guadalajara,8],
[chihuahua,df,9],[guadalajara,culiacan,10],[guadalajara,df,3],
[df,chihuahua,9],[df,guadalajara,3]]).
Как вы видите, в моем втором списке «полетное расстояние» у каждого списка в нем есть аэропорт отправления, затем пункт назначения и, наконец, расстояние, которое будет пройдено, не все аэропорты имеют прямой рейс друг к другу, поэтому им нужно взять весы, чтобы прибыть, сейчас мне нужна идея, я заблудился, единственное, чего я смог достичь, - это узнать, может ли определенный город попасть непосредственно в другой город, что-то вроде базового варианта :
flight(X,Y):-directpath(X,Y).
flightR(X,Y,[[X,Y,_]|_]).
flightR(X,Y,[_|LL]):-flightR(X,Y,LL).
directpath(X,Y):-flightdistance(Z),flightR(X,Y,Z).
Я действительно потерян, я думаю, что только что сделал беспорядок и не знаю, как это исправить, как я уже сказал, мне нужно знать, какие пути могут привести меня от X к Y и какое расстояние будет пройдено, я пытался следовать той же структуре, что некоторые примеры ориентированного графа показывают здесь в stackoverflow, но я не смог перевести это для работы со списками, любая идея будет очень признательна.
Заранее спасибо.