From 4fbec299715433affb96c85238b24d28845961a1 Mon Sep 17 00:00:00 2001 From: Lendaia Mirai Date: Mon, 12 Jan 2026 18:37:27 +0100 Subject: [PATCH] =?UTF-8?q?k=C3=B6szirimcsiii?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ALGA/Adatszerkezetek/12_SulyozottGraf.cs | 76 ++++++++++++++++++------ 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/ALGA/Adatszerkezetek/12_SulyozottGraf.cs b/ALGA/Adatszerkezetek/12_SulyozottGraf.cs index 6668571..0180bf8 100644 --- a/ALGA/Adatszerkezetek/12_SulyozottGraf.cs +++ b/ALGA/Adatszerkezetek/12_SulyozottGraf.cs @@ -1,4 +1,5 @@ using System; +using System.Security.Cryptography.X509Certificates; namespace OE.ALGA.Adatszerkezetek @@ -183,33 +184,72 @@ namespace OE.ALGA.Adatszerkezetek public static Halmaz Kruskal(SulyozottGraf g) where E: SulyozottGrafEl, IComparable { - FaHalmaz feszitofa = new FaHalmaz(); + // //FaHalmaz feszitofa = new FaHalmaz(); + // Szotar legrovidebb = new HasitoSzotarTulcsordulasiTerulettel(g.CsucsokSzama); + // KupacPrioritasosSor S = new KupacPrioritasosSor(g.ElekSzama, (ez, ennel) => legrovidebb.Kiolvas(ez) < legrovidebb.Kiolvas(ennel)); + // FaHalmaz A = new FaHalmaz(); + // Szotar vhalmaz = new HasitoSzotarTulcsordulasiTerulettel(g.CsucsokSzama); + // int i = 0; + // g.Csucsok.Bejar(x => {vhalmaz.Beir(x, i++);}); + // g.Elek.Bejar(e => + // { + // legrovidebb.Beir(e, int.MaxValue); + // S.Sorba(e); + // }); + + // while(!S.Ures) + // { + + // E minimum = S.Sorbol(); + + // if (vhalmaz.Kiolvas(minimum.Honnan) != vhalmaz.Kiolvas(minimum.Hova)) + // { + // A.Beszur(minimum); + // g.Csucsok.Bejar(x => + // { + // if(vhalmaz.Kiolvas(minimum.Honnan) == vhalmaz.Kiolvas(x)) + // { + // vhalmaz.Beir(x, vhalmaz.Kiolvas(minimum.Hova)); + // } + // }); + + // } + + // } + // return A; + Szotar vhalmaz = new HasitoSzotarTulcsordulasiTerulettel(g.CsucsokSzama); + FaHalmaz A = new FaHalmaz(); + PrioritasosSor S = new KupacPrioritasosSor(g.ElekSzama, (ez, ennel) => ez.Suly < ennel.Suly); int i = 0; - g.Csucsok.Bejar(x => {vhalmaz.Beir(x, i++);}); - g.Elek.Bejar(e => {feszitofa.Beszur(e);}); - - while(feszitofa.gyoker != null) + g.Csucsok.Bejar(x => { + vhalmaz.Beir(x, i++); + }); + g.Elek.Bejar(x => + { + S.Sorba(x); + }); - E minimum = feszitofa.gyoker.tart; - feszitofa.Bejar(x => - { - if(minimum.Suly > x.Suly) - { - minimum = x; - } - }); - - feszitofa.Torol(minimum); + while(!S.Ures) + { + E minimum = S.Sorbol(); if (vhalmaz.Kiolvas(minimum.Honnan) != vhalmaz.Kiolvas(minimum.Hova)) { - vhalmaz.Beir(minimum.Honnan, vhalmaz.Kiolvas(minimum.Hova)); + A.Beszur(minimum); + int h = vhalmaz.Kiolvas(minimum.Honnan); + g.Csucsok.Bejar(x => + { + if(h == vhalmaz.Kiolvas(x)) + { + vhalmaz.Beir(x, vhalmaz.Kiolvas(minimum.Hova)); + } + }); } - } - return feszitofa; + + return A; } } }