Ogni algoritmo avido ha una struttura matroid?


13

E 'ben noto che per ogni matroide e qualsiasi funzione peso , ci esce un algoritmo che restituisce una base massima peso di . Quindi, è vera anche la direzione opposta? Cioè, se esiste un algoritmo avido, allora ci deve essere anche una struttura matroid.MwGreedyBasis(M,w)M


L'algoritmo di Dijkstra è spesso considerato un algoritmo avido (ad es. Vedere la Sezione 4.4 di "Algorithm Design" di Kleinberg e Tardos). Non conosco un'interpretazione matroid dei percorsi più brevi single-source.
Neal Young,

Il partizionamento di una serie di intervalli reali in un numero minimo di sottoinsiemi disgiunti a coppie ha un algoritmo naturale avido (enumera gli intervalli in base all'ora di inizio, per ognuno aggiungilo se possibile a un sottoinsieme esistente, altrimenti avvia un nuovo sottoinsieme; vedi il capitolo 4 di Kleinberg e Tardos). Questo problema può essere compreso come un matroide?
Neal Young,

Risposte:


12

In realtà, la descrizione completa e generale di un problema che può essere risolto con un algoritmo avido è un incorporamento matroid , che generalizza sia il concetto di matroid che quello di un greedoid . La risposta è no: un problema risolvibile con un algoritmo avido non ha bisogno di una struttura matroide, ma avrà la struttura di un incorporamento matroide (che è, ahimè, molto più complicato).

Un modello mentale per alcuni di questi potrebbe essere trovare alberi di spanning minimi. La struttura utilizzata dall'algoritmo di Kruskal è un matroid, ma non quella utilizzata dall'algoritmo di Prim (che richiede un nodo iniziale). (È, tuttavia, un avidità - e un incorporamento matroid.)

Helman et al. (1993), nel loro articolo An Exact Characterization of Greedy Structures definiscono la loro nozione di algoritmo goloso in termini di sistemi di insiemi, che è lo stesso formalismo utilizzato per matroidi e greedoidi. Un sistema di insiemi costituito da un insieme e da una raccolta di sottoinsiemi di , i cosiddetti insiemi fattibili . Una base per il sistema dell'insieme è un insieme massimo fattibile, cioè un insieme che è fattibile ma non contenuto in nessun altro insieme fattibile. Una funzione oggettiva associa ogni sottoinsieme di a un valore. UnS C S f : 2 SR S(S,C)SCS f:2SRSIl problema dell'ottimizzazione , in questo formalismo, consiste nel trovare una base del massimo valore oggettivo per un determinato sistema e funzione obiettivo.

L'algoritmo avido, definito in termini di questo formalismo, è abbastanza semplice: inizi con l'insieme vuoto e aggiungi successivamente un singolo elemento fino a raggiungere una base, assicurando sempre che (i) l'insieme sia fattibile ad ogni passaggio e ( ii) l'elemento che aggiungi massimizza la funzione obiettiva del risultato risultante, wrt. tutti gli elementi alternativi che avresti potuto aggiungere. (Cioè, concettualmente, provi ad aggiungere tutte le alternative possibili e scegli quella che produce il valore oggettivo più alto.)

Potresti forse sostenere che potrebbero esserci altre forme di algoritmo avido, ma ci sono diversi libri di testo sugli algoritmi e l'ottimizzazione combinatoria che descrivono questo algoritmo basato su sistema impostato come l' algoritmo avido. Ciò non ti impedisce di descrivere qualcosa che non si adatta, ma potrei ancora essere chiamato avido, suppongo. (Eppure, questo fa la copertura tutto ciò che potrebbe potenzialmente avere una struttura matroide, per esempio, anche se è molto più generale.)

Cosa Helman et al. fare è che descrivono quando questo algoritmo funzionerà. Più specificamente:

  1. Mostrano che per funzioni oggettive lineari (dove il valore oggettivo è la somma dei pesi degli elementi), l'algoritmo avido funzionerà esattamente sulla struttura che definiscono un incorporamento matroid;

  2. Danno una caratterizzazione simile per i cosiddetti obiettivi di collo di bottiglia (in cui il valore obiettivo di un insieme è uguale al minimo sui pesi dei singoli elementi); e

  3. Danno una caratterizzazione esatta di quali funzioni oggettive (oltre a quelle lineari) sono ottimizzate dall'algoritmo avido su matrimoni matroid.


3
Puoi spiegare qual è la loro definizione di algoritmo avido?
Kaveh,

1
Ho ampliato la mia risposta per spiegare qual è il loro formalismo.
Magnus Lie Hetland,

11

L'algoritmo goloso non è un concetto formalmente definito. Esistono vari modelli che tentano di catturare questa idea intuitiva, ma non vi è consenso su ciò che è un algoritmo avido. A meno che non si specifichi una definizione formale di ciò che si intende con un algoritmo avido, alla domanda non si può rispondere come sì o no.

Esiste una generalizzazione dei matroidi chiamata greedoid che si ispira agli algoritmi golosi che potresti voler guardare.


Non è necessaria una definizione formale se siamo d'accordo su alcune proprietà della classe di algoritmi golosi. Se, per esempio, concordassimo che ogni algoritmo avido ha (una formalmente definita) proprietà P, e mostriamo che ogni algoritmo che soddisfa P può essere definito su un matroid, ciò darebbe una risposta positiva alla domanda del PO. Allo stesso modo, se concordassimo che un certo algoritmo è avido e mostriamo che non può essere l'algoritmo goloso di un matroid, ciò darebbe una risposta negativa.
Staccato Laconian il

2

Considera i seguenti problemi: EURO DELLA CATENA DI CATENA: dato un importo infinito di banconote da 1,2,5,10 euro, paga X euro usando il minor numero di banconote possibile. Ciò può essere risolto utilizzando un algoritmo avido, che prende la massima nota possibile. Ma non esiste una struttura matroide in questo problema.

COPERTURA FORO: ci sono buchi nelle posizioni x_1, x_2, ..., x_n. Hai una toppa di lunghezza 10 cm. Patch i fori usando il minor numero di patch possibile. Ancora una volta, questo può essere risolto in modo avido (basta mettere il cerotto il più giusto possibile), ma non esiste una struttura matroide.


grazie, avevo i miei sospetti ma non ne ero sicuro. Quindi, dopotutto, dobbiamo cercare un algoritmo avido anche se la struttura matroid non esiste.

1
@ user3373748 Di solito cerco solo un programma dinamico. Greedy è una DP degenerata.

1
(Non essere pignoli, ma non ci sono banconote da 1 o 2 euro; potresti voler cambiare il tuo set di valori in {5, 10, 20, 50, 100, 200} o riformulare ;-))
Anthony Labarre

Si noti che l'algoritmo di cambio moneta descritto funziona per {1,2,5,10} ma potrebbe non calcolare risultati ottimali per altri valori. Esempio: con {1,3,4} la soluzione ottimale per 6 sarebbe [3,3] ma l'algoritmo restituirebbe [4,1,1].
Socowi,

1
Esiste una struttura matroid per il problema del cambio di moneta - gauss.ececs.uc.edu/Courses/C671/html/Homework/hw5_sol.html
Tushant Mittal
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.