Bölüm 14 · SimülasyonDers Ön Koşul Planlayıcısı? ← Bölüm 14Yeni dersDers Ekle ÖnceSonraÖn Koşul Ekle Kaldıru → v: u, v'den önce alınırÖrnekDöngülüTemizlekahn(adj) giris[]qsonucplan KapatDers Ön Koşul PlanlayıcısıDersler düğüm, ön koşullar yönlü kenardır: u → v kenarı, u'nun v'den önce alınması gerektiğini gösterir. Geçerli bir ders planı bu çizgenin topolojik sıralamasıdır; burada Kahn algoritmasıyla adım adım hesaplanır.KullanımAdıyla bir ders ekleyin, ardından Önce ve Sonra derslerini seçip Ön Koşul Ekle'ye basın (kenarı silmek için Kaldır).Örnek 7 ön koşullu 6 ders yükler; Döngülü bir döngüyü kapatan kenar ekler; Temizle her şeyi siler.Adımlar arasında ⏮ ◀ ▶ ile gezinin ya da hepsini çalıştırmak için Oynat'a basın. kahn(adj) içindeki vurgulu satır, o an yürütülen satırdır.Düğümdeki g giriş derecesini, D dersin alınacağı dönemi gösterir.Satırlar ne gösterirgiris[]: her dersin giriş derecesi (karşılanmamış ön koşul sayısı).q: giriş derecesi 0 olan, yani hemen alınabilecek derslerin kuyruğu.sonuc: o ana kadar üretilen topolojik sıra.plan: en uzun ön koşul zincirlerine göre dönemlere ayrılmış dersler.Kahn algoritmasıTüm giriş dereceleri hesaplanır ve giriş derecesi 0 olan dersler kuyruğa alınır. Ardından her adımda kuyruktan bir ders çıkarılır, sonuca eklenir ve ardıllarının giriş derecesi bir azaltılır; derecesi 0'a inenler kuyruğa girer. Sonuçtaki ders sayısı çizgedekinden azsa kalan dersler bir döngü üzerindedir ve geçerli bir plan yoktur. Algoritma O(V + E) sürede çalışır.