1 svar
90 visningar
thpthp behöver inte mer hjälp
thpthp 5
Postad: 6 aug 2018 18:53

Hitta maximal matchning med hjälp av utökande vägar i en graf

Jag behöver hjälp med att förstå hur man hittar en maximal matchning i en graf. Det jag förstår är att man börjar välja vilken kant som helts, som tex 2-c. Dock förstår jag inte hur jag tänker sen. Jag vet svaret på frågan som är {{1,a},{2,c},{3,b},{4,d},{5,e}}. Dock vill jag förstå hur man själv löser detta.

SeriousCephalopod 2696
Postad: 7 aug 2018 08:54 Redigerad: 7 aug 2018 09:07

Idealt så vill man ju kanske använda en 'optimal algoritm' i något avseende men en i mina ögon ganska uppenbar "snål algoritm" förefaller vara:

Låt säga att du börjar med att makera en kant säg 2c. När du väl gjort detta så faller övriga kanter i grafen i n i två kategorier.

A) Kanter som delar hörn med 2c

B) Kanter som inte delar hörn med 2c

Om du vill uttöka matchingen med fler kanter så kan du markera vilken som helst av kanterna i kategori B). Säg 4d. Därefter befinner du dig i en ny situation där övriga kanter kan delas in i två nya kategorier

A') Kanter som delar hörn med 2c eller 4d

B') Kanter som inte delar hörn med 2c eller 4d

Man kan fortsätta att upprepa detta med att markera kanter som inte delar hörn med kanter man redan markerat fram tills dess att det inte finns några fler att markera och då man har en maximal matchning eftersom definitionen ju ska vara att man inte kan addera fler kanter till mängden. 

Om en graf har flera maximala matchingar så garanterar inte denna process att man hittar en specifik matching såsom den med minst eller flest kanter men man kan i så fall upprepa processen med några olika start-kanter och producera några olika matchingar, mest primitivast genom att implementera ett sökträd. 

Svara
Close