köszirimcsiii

This commit is contained in:
Lendaia Mirai
2026-01-12 18:37:27 +01:00
parent cf4cfe65bb
commit 4fbec29971

View File

@@ -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<E> Kruskal<V, E>(SulyozottGraf<V, E> g) where E: SulyozottGrafEl<V>, IComparable
{
FaHalmaz<E> feszitofa = new FaHalmaz<E>();
// //FaHalmaz<E> feszitofa = new FaHalmaz<E>();
// Szotar<E, float> legrovidebb = new HasitoSzotarTulcsordulasiTerulettel<E, float>(g.CsucsokSzama);
// KupacPrioritasosSor<E> S = new KupacPrioritasosSor<E>(g.ElekSzama, (ez, ennel) => legrovidebb.Kiolvas(ez) < legrovidebb.Kiolvas(ennel));
// FaHalmaz<E> A = new FaHalmaz<E>();
// Szotar<V, int> vhalmaz = new HasitoSzotarTulcsordulasiTerulettel<V, int>(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<V, int> vhalmaz = new HasitoSzotarTulcsordulasiTerulettel<V, int>(g.CsucsokSzama);
FaHalmaz<E> A = new FaHalmaz<E>();
PrioritasosSor<E> S = new KupacPrioritasosSor<E>(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;
}
}
}