Spiegazione di Branch and Bound


9

Ho un test sull'algoritmo branch e bound . Comprendo teoricamente come funziona questo algoritmo ma non sono riuscito a trovare esempi che illustrino come questo algoritmo può essere implementato praticamente.

Ho trovato alcuni esempi come questo, ma sono ancora confuso al riguardo. Ho anche cercato il problema del venditore ambulante e non riuscivo a capirlo.

Ciò di cui ho bisogno sono alcuni problemi e come possono essere risolti usando branch e bound.


1
Cosa è stato difficile da capire? hai provato a tornare indietro prima?

Sì, l'ho provato. Il problema con il B&B è se ottengo un problema che può essere risolto con B&B, non so come posso ottenere il limite inferiore per ciascun nodo e anche come posso ottenere la funzione obiettivo. Inoltre, qual è il primo valore del bestsofar che confronto con ciascun limite inferiore?
MR.NASS,

2
@ MR.NASS Non sono sicuro di cosa esattamente stai dicendo nel tuo ultimo commento. Vorrei provare a spiegare. Il B&B è un metodo per potare l'albero di ricerca. Può essere applicato a problemi che devono ottimizzare una funzione obiettiva. Di solito viene applicato a problemi di ottimizzazione discreti o combinatori. Ad ogni passaggio si tenta di trovare un limite inferiore della funzione obiettivo per tutte le possibili soluzioni rimanenti. Se il limite inferiore è superiore alla migliore soluzione corrente, è possibile interrompere la ricerca e tornare indietro (potare l'albero di ricerca), poiché non può esserci soluzione con un punteggio inferiore.
George

2
Di solito si risolve una versione rilassata del problema per ottenere un limite inferiore. Per i programmi con numeri interi misti, si tratta in genere del rilassamento della programmazione lineare.
Opt

2
@ MR.NASS Dipende dalla funzione obiettivo. Come ha detto Sid, di solito risolvi una versione rilassata del problema dato. Di solito si vuole usare una versione rilassata che fornisce una buona approssimazione del problema iniziale e può essere risolta in modo efficiente. Si noti che la versione rilassata deve dare un limite inferiore che è al massimo alto come il limite inferiore reale per funzionare correttamente. Un altro esempio: supponiamo di voler risolvere MAXSAT con un metodo B&B. Per una determinata assegnazione di verità parziale puoi facilmente calcolare il numero di clausole soddisfatte. Un limite superiore (poiché si tratta di un problema di massimizzazione) ...
George

Risposte:


10

Applichiamo Branch and Bound a Zaino , speriamo che questo ti renda chiaro il concetto.

Abbiamo articoli, etichettati da 1 a n . v i è il valore del I oggetto esimo, e w ho il suo peso. Cerchiamo di inserirli in uno zaino che può contenere un peso fino a T in totale e cerchiamo di massimizzare la somma dei valori dell'articolo che mettiamo nello zaino.n1nviiwiT

v1n1v1n1

iinO(2n)

Tn/2n/2+1nn/2+1n2n/2

dO(2d)

Nota che questo si chiama " Bounding " perché di solito comporta una sorta di limite inferiore o superiore: per il criterio " anche se inserisco tutti gli elementi rimanenti, il valore degli elementi che ho inserito non supererà la migliore configurazione Ho trovato finora ', il valore della tua migliore configurazione finora è un limite inferiore alla migliore configurazione, quindi tutto ciò che non riuscirà mai a superare questo limite inferiore è destinato a fallire.

Puoi rendere la parte "Bounding" complessa come preferisci. Ad esempio, i problemi di programmazione con numeri interi vengono spesso risolti usando rilassamenti: rilassi il tuo programma su un programma lineare, che puoi risolvere in tempo polinomiale, e poi puoi eliminare molti casi per le tue variabili binarie che non funzioneranno mai comunque. Quindi si ramificano le opzioni rimanenti.

Nota che Branch and Bound di solito ti dà solo un aumento di velocità in pratica, ma non in teoria: è difficile dire esattamente quanto dell'albero di ricerca viene tagliato usando la tua euristica. Ciò è testimoniato dal numero di diverse euristiche utilizzate nella pratica su tali problemi. Se sei sfortunato, l'albero di ricerca rimanente rimane enorme anche con molti limiti.


4

Considerare la pianificazione , il compito di assegnare lavori con determinate durate e scadenze alle macchine. Assumiamo un tempo discreto. Molti di questi problemi sono NP (O) -hard.

1riLmax

  • su una macchina
  • problemi con le date di uscita e noi
  • minimizzare il ritardo massimo , ovvero la differenza massima tra scadenza e tempo di completamento su tutti i lavori.Lmax

La versione decisionale di questo problema è NP-difficile; questo può essere visto dalla riduzione da 3PARTITION .

È interessante notare che, se consentiamo la prelazione , ovvero lo scambio di lavori attivi, il problema può essere risolto in tempo quadratico dalla prima euristica Prima scadenza prima euristica (con date di scadenza modificate). È facile vedere che la soluzione ottimale di questa variante non può essere peggiore della soluzione ottimale del problema originale.

Ora, per applicare Branch & Bound a questo problema, dobbiamo correggere alcuni parametri:

  • Calcoliamo limiti inferiori consentendo la prelazione e utilizzando EDD.
  • Ci ramifichiamo fissando tutti i lavori non programmati come il prossimo.
  • Andiamo dal bambino con i limiti inferiori piccoli per primi.

Devi farlo per ogni applicazione di B&B.


Per un esempio concreto, considerare questa istanza di :1riLmax

i1234pi4265ri0135di8121110

con i tempi di elaborazione dei lavori, le date di rilascio e le date di scadenza.r i d ipiridi

Eseguendo B&B come sopra specificato, ciò accade:

algoritmo
Questa GIF non esegue il loop. Ricaricalo in una nuova scheda per vedere dall'inizio.
[ fonte ] [ versione statica ]

Si noti che su 41 nodi, solo quattro vengono visitati correttamente e solo per dieci vengono calcolati limiti inferiori.

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.