Generalizzazione dell'algoritmo ungherese a grafici generali non indirizzati?


14

L'algoritmo ungherese è un algoritmo di ottimizzazione combinatoria che risolve il problema della corrispondenza del peso massimo bipartito in tempi polinomiali e ha anticipato il successivo sviluppo dell'importante metodo primal-dual . L'algoritmo è stato sviluppato e pubblicato da Harold Kuhn nel 1955, che ha dato il nome di "algoritmo ungherese" perché l'algoritmo si basava sulle opere precedenti di due matematici ungheresi: Dénes Kőnig e Jenő Egerváry. Munkres ha rivisto l'algoritmo nel 1957 e ha osservato che si tratta davvero di un polifunzio. Da allora l'algoritmo è anche noto come algoritmo Kuhn-Munkres.

Sebbene l'ungherese contenga l'idea di base del metodo primal-dual, risolve direttamente il problema di corrispondenza bipartita del peso massimo senza utilizzare alcun macchinario di programmazione lineare (LP). Quindi, in risposta alla seguente domanda , ha commentato Jukka Suomela

Ovviamente puoi risolvere qualsiasi LP usando un solutore LP generico, ma gli algoritmi specializzati in genere hanno prestazioni molto migliori. [...] Spesso puoi anche evitare problemi come l'uso di numeri razionali esatti rispetto a numeri in virgola mobile; tutto può essere fatto facilmente con numeri interi.

In altre parole, non devi preoccuparti di come arrotondare una soluzione razionale / a virgola mobile dal solutore LP per ottenere una corrispondenza perfetta del peso massimo di un dato grafico bipartito.

La mia domanda è la seguente:

Esiste una generalizzazione dell'algoritmo ungherese che funziona per un grafico generale non orientato senza l'uso di macchinari LP in modo simile allo spirito dell'algoritmo ungherese originale?

Preferirei un'esposizione moderna e di facile lettura piuttosto che un documento complicato originale. Ma qualsiasi puntatore sarà molto apprezzato!

Mille grazie in anticipo e buon Natale !!!


Aggiornamento: Arman sotto risponde alla domanda. Voglio solo sottolineare che un'altra bella fonte per studiare l'algoritmo Blossom di Edmonds (per il caso ponderato) è il capitolo 11 dell'ottimizzazione combinatoria di Korte e Vygen . Google book in realtà mostra quasi tutte le parti di cui ho bisogno per capire l'algoritmo.


2
Che ne dici dell'algoritmo di matching di Edmonds? en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm
Arman

1
@Arman - È quello che stavo pensando anch'io. Grazie per il link, Wikipedia ha un'esposizione sorprendentemente dettagliata dell'algoritmo blossom di Edmond.
Abraham Flaxman,

2
A proposito, anche l'algoritmo di matching di Edmonds si basa sul metodo Primal-Dual.
Arman,

1
Grazie Arman. Il link di Wikipedia punta anche al libro "Lovász, László; Plummer, Michael (1986). Matching Theory" per la versione ponderata dell'algoritmo di Edmonds. Dovrei davvero controllare quel libro. Grazie mille per i tuoi commenti! Forse se qualcuno di voi può spiegare ad alto livello come l'algoritmo generalizza l'algoritmo ungherese, si può sicuramente farne una risposta.
Dai Le

1
Penso che sia una risposta abbastanza buona così com'è :). Arman, dovresti aggiungerlo come tale
Suresh Venkat il

Risposte:


16

L'algoritmo di matching di Edmonds (chiamato anche Blossom Algorithm) risolve la corrispondenza massima sui grafici generali. In realtà si tratta di una generalizzazione del metodo dei percorsi alternati. (Non sono sicuro del nome del metodo, ma dovrebbe essere il metodo di König-Hall.) Fondamentalmente trova percorsi in aumento (vedi pagina wikipedia: http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm ) per estendere il metodo corrispondenza attuale e si interrompe se non ci sono più percorsi di potenziamento. Nei grafici generali, l'unico problema si verifica nei cicli dispari. Nell'algoritmo di corrispondenza di Edmonds i cicli dispari vengono contratti (fiori) e riutilizzati per avere una soluzione.

Esiste anche una corrispondenza tra Blossom Algorithm e Primal Dual. Cicli dispari causano punti estremi frazionari. Pertanto aggiungiamo le cosiddette disuguaglianze di fioritura per ogni ciclo dispari.

Con questo approccio si potrebbe anche gestire la corrispondenza perfetta ponderata minima e la corrispondenza peso massima.

Per i dettagli dell'algoritmo, consultare http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm http://www.cs.berkeley.edu/~karp/greatalgo/lecture05.pdf

Per la formulazione matematica e il corrispondente metodo primal-dual, consultare http://webdocs.cs.ualberta.ca/~mreza/courses/CombOpt09/lecture4.pdf


9

Due anni fa, durante la ricerca dell'algoritmo blossom (non ponderato), ho trovato due grandi serie di note, una di Tarjan e una di Zwick. Hanno reso il caso non ponderato piuttosto semplice e sono stato in grado di implementarlo in Mathematica usando la ricorsione. Funziona abbastanza bene.

Le note che ho trovato utili sono

http://www.cs.tau.ac.il/~zwick/grad-algo-06/match.pdf e http://www.cs.dartmouth.edu/~ac/Teach/CS105-Winter05/Handouts/ Tarjan-blossom.pdf

Distillano tutto in termini molto semplici che consentono di pensare in modo ricorsivo e quindi, come notato, programmare in modo ricorsivo.

Penso che dovrebbe funzionare tutto nel caso ponderato, che sto cercando di implementare ora.


E ho delle demo che possono essere guardate da chiunque abbia il software gratuito: il primo mostra che sboccia bene .... < dimostrations.wolfram.com/… > < dimostrations.wolfram.com/TheHungarianMaximumMatchingAlgorithm > < dimostrations.wolfram.com/ Posizionamento dei domini sulla scacchiera >
Stan Wagon,

E ho appena programmato un fiore non ponderato come indicato in Korte / Vygen. Vedo che al suo codice sono possibili un paio di accelerazioni (ad esempio, iniziare con una corrispondenza massima, al contrario di niente), ma la cosa bella è che il suo codice procedurale è dato in una forma che si può facilmente tradurre in codice funzionante. Successivamente: fiore ponderato, che è molto più difficile.
Stan Wagon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.