OCaml'da bir eğitim yapıyorum (bana neden sorma, sadece dil bilgimi genişletmeye karar verdim, sanırım) ve ben nerede olduğumu anladım. grafiklerle çalışmak. Öğretici bana, iyi bir şekilde uygulayabileceğim bir grafikte nasıl geniş kapsamlı bir ilk arama yapmam gerektiğini öğretti. Ancak, derinlemesine ilk arama için bir algoritma ile uğraşıyorum, bu da öğreticinin gittiği şeylerden biri, "Bunu ilk önce derin bir yöntemle denemenizi öneririz, ancak size nasıl yap."OCAML Derinlik-İlk Arama
Bunu şu şekilde uygulamaya çalışıyorum: let rec dfs graph start end
. Diğer bir deyişle, bir kenarlar(), bir başlangıç düğümü (start
) ve bir bitiş düğümü (end
) listesinde yaptığım yerde yapmaya çalışıyorum.
Ben kenar listesinin kullanarak Grafiğimi oluşturduk ... Ancak
let edges = [
("a", "b"); ("a", "c");
("a", "d"); ("b", "e");
("c", "f"); ("d", "e");
("e", "f"); ("e", "g")
];;
, ben tamamen buradan nereye hakkında kayboldum. Beni nasıl süreceğine dair bir tavsiye var mı? Teşekkürler.
Her zamanki bir cümle özeti, derinlik-ilk aramanın, ilk önce genişlikteki ilk arama ile aynı olmasıdır; ancak, beklenmedik düğümlerin sırasını bir yığınla değiştirmeniz dışında. İlk geniş arama uygulamanızı bu şekilde değiştirmeyi deneyebilirsiniz. –
Düğümün ardıllarını listeleme işlevi, sizin için işleri daha kolay hale getirebilir. – PatJ