Ağırlıksız ikili eşleştirme
Tanımlar Eşleştirme Serbest köşe
Tanımlar Maksimum eşleştirme: en fazla kiriş sayısına sahip eşleştirme
Tanım Maksimum eşleştirme tek türlü olmayabilir.
Değişmeli Yol Değişmeli yol eşleştirilmiş ve eşleştirilmemiş kirişlerin değişmeli yoludur. a b c d e f g h i j d-h-e: değişmeli yoldur a-f-b-h-d-i: serbest köşeden serbest köşeye değişmeli yoldur f-b-h-e: değişmeli yol değil e-j: serbest köşeden serbest köşeye değişmeli yoldur
Ana fikir “Çevir”işlemi: serbest köşeden serbest köşeye olan değişmeli yolda (bu yola büyüyen yol denir)eşleştirilmiş kirişleri eşleştirilmemiş ve tersine yap Not: Çevir işleminden sonra eşleştirilmiş kiriş sayısı 1 artar
Ana fikir Herhangi bir eşleştirmeden başla Serbest köşeden serbest köşeye değişmeli yol bulunduğu sürece Bu tür bir P yolunu bul P yolunda çevir yap
Büyüyen yol için Breadth-First Search Algoritması Use Breadth-First Search: LEVEL(0) = some unmatched vertex r for odd L > 0, LEVEL(L) = {u|{v,u} E – M when v LEVEL(L -1) and when u in no lower level} For even L > 0, LEVEL(L) = {u|{v,u} M and u in no lower level} Assume G is bipartite graph with matching M.
Örnek Rastgele bir eşleştirmeden başla
Örnek Serbest köşe bul (şekilde çevresi yeşil olan)
Örnek BFS çalıştır
Algoritma BFS de eşleştirmiş kirişlerde eşleştirilmemiş kirişleri değişmeli seç
Büyüyen yol bulunduğunda dur
Büyüyen yol ağacı
Çevir!
Tekrarla Başka serbest köşe bul
Tekrarla BFS çalıştır
Tekrarla Çevir
Sonuç
Dayanıklı evlilik Problemi
Problem N erkek ve N kadın veriliyor. Her biri evlenebileceği kişilerin tercih sırasını belirtiyor. Amaç: Maksimum sayıda evlilik yaptırmak
Dayanıklılık 2 evli çifti ele alalım Eğer bu evli çiftler arasında bulunan bir kişi diğerinin eşini karşılıklı olarak kendi eşinden daha çok seviyorsa bu çiftlerin evliliği dayanıksızdır denir. Örneğin, A1 B3 C2 D4 E5 evliliği dayanıksızdır. A 2 yi 1 den çok seviyor 2 A yı C den çok seviyor A B C D E 2 5 1 3 4
Akla gelen ilk çözüm Uygun bir çözümden başla. Dayanıklılığını kontrol et. Dayanıklı ise tamamdır! Aksi durumda dayanıksız çiftleri bul ve tercihlerine göre tekrar evlendir. Çalışır mı?
Akla gelen ilk çözüm Çalışmaz Örneğin, A1 B3 C2 D4 E5 A2 B3 C1 D4 E5
Algoritma X ilk erkek olsun. X in kalan listesindeki en iyi tercihi α olsun. Eğer α nişanlı değilse (X, α) yi nişanlı yap. X=sıradaki erkek olsun ve adım 2 ye geç. Eğer α nişanlı ise ama X i kendi nişanlısı Y den daha çok seviyorsa (X, α) yi nişanla ve sonra X=Y de. Adım 2 ye git
Örnek A B C D E 2 1 2 1 5 5 2 3 3 3 1 3 5 2 A B C D E 2 5 1 3 4 4