Prolog. Buat penutupan transitif dari grafik
Nov 30 2020
Saya sangat baru di Prolog. Saya memiliki grafik seperti itu:
edge(a,e).
edge(e,f).
edge(f,d).
edge(d,a).
Saya mendefinisikan penutupan transitif sebagai:
p(X,Y) :- edge(X,Y).
tran(X,Z) :- p(X,Y), p(Y,Z).
Saya perlu membuat penutupan transitif dari grafik. Beri tahu saya cara melanjutkannya.
Jawaban
2 WillemVanOnsem Nov 30 2020 at 00:58
Masalahnya trans/2
adalah bahwa ia hanya akan berjalan dua sisi, bukan nomor yang berubah-ubah.
Kita bisa mendefinisikan predikat tran(X, Z)
yang memegang jika edge(X, Z)
ditahan, atau edge(X, Y)
lalu tran(Y, Z)
. Dengan demikian, kami mengikuti satu sisi dan kemudian kembali lagi tran/2
:
tran(X, Z) :-
edge(X, Z).
tran(X, Z) :-
edge(X, Y),
tran(Y, Z).
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'