TECNICA LABELING Proprietà del limite superiore

Transcript

TECNICA LABELING Proprietà del limite superiore
TECNICA LABELING
, definisco [ ] e [ ] informazioni variabili durante l’esecuzione degli algoritmi:


[ ] è detta “stima di cammino minimo” ed è un valore che, in un dato momento dell’esecuzione
degli algoritmi, sarà la stima migliore del valore reale ( ). Si fa in modo che valga sempre:
[ ]
( ). Se l’algoritmo è corretto, alla fine varrà anche [ ]
( );
[ ] è il predecessore di in un cammino minimo da a , secondo le informazioni raccolte
fintanto che l’algoritmo è in esecuzione;
Tutti gli algoritmi che si rifanno alla metodologia labeling useranno in qualche modo le seguenti due
procedure:
INITIALIZE-SINGLE-SOURCE ( ,
for each
do
[ ]
[ ]
NIL
[ ]
)
RELAX ( , , )
[ ]
if [ ]
[ ]
[ ]
[ ]
(
) then
(
)
Proprietà del limite superiore
(
) grafo,
Siano
funzione peso,
Allora, dopo aver eseguito INITIALIZE-SINGLE-SOURCE( , ), dopo l’applicazione di un qualsiasi
( )
numero di operazioni RELAX, varrà la condizione: [ ]
Dim.
Per induzione su , numero di operazioni RELAX eseguite dopo la INITIALIZE-SINGLE-SOURCE.


Passo base:
, cioè non abbiamo ancora mai eseguito alcuna RELAX;
grazie alla INITIALIZE-SINGLE-SOURCE,
per
, se esiste un ciclo di peso negativo raggiungibile da vale:
[ ]
[ ]
( )
( )
mentre, se non esiste un ciclo di peso negativo raggiungibile da vale:
[ ]
[ ]
( )
( )
{ } vale: [ ]
( ), che è banalmente vera
per
Passo induttivo: valga la tesi per un generico e dimostriamo che vale anche per
, cioè valga
) operazione RELAX, che avrà forma RELAX( , , ). È pacifico constatare
dopo la (
che l’unico valore modificato (se lo sarà) da RELAX( , , ) è [ ], quindi ci concentriamo su di
( ). Applico RELAX( , , ):
esso; per ipotesi induttiva, dopo operazioni valeva [ ]
[
],
se non è stato aggiornato il valore
la proprietà banalmente vale per [ ]; se fosse stato
( )[ ]
(
) e ora vale:
aggiornato, significa che prima dell’operazione valeva ( ) [ ]
(
)[
Ma per ipotesi induttiva, valeva anche
( )[ ]
( )
Ma per la proprietà triangolare si ha (
Compattando gli estremi si ha: (
)
(
]
)[ ]
(
)
(
( )[
]
(
)
( ), e si ha la catena di implicazioni:
( )[ ]
)
(
)
(
)
( )[ ]
( )
(
)
(
)
)[
] .
(
)[
]
Proprietà della convergenza
Sia grafo a cui ho applicato INITIALIZE-SINGLE-SOURCE ed una sequenza qualsiasi di operazioni RELAX.
( ) ed esiste un cammino di peso minimo
Se prima di applicare la nuova RELAX( , , ) vale [ ]
), allora applicando RELAX( , , ) varrà [ ]
( ).
che da giunge a e comprende l’arco (
Dim. Ci poniamo nella condizione successiva all’applicazione della RELAX; per la proprietà triangolare
[ ]
[ ]
(
), ma per ipotesi era [ ]
( ), quindi: [ ]
(
)
valeva: [ ]
[ ]
( )
(
)
( )
(
) ( ) ( ) ( ) ( ) ( ) [ ] ove:
( ) : perché è il peso del cammino
( ) : perché è di peso minimo
( ) : per la Proprietà del limite superiore
[ ]
( )
[ ], cioè {
[ ]
( )
( ) .
Compattando gli insiemi si ha [ ]
}
[ ]
( )
Presentiamo, ora, un algoritmo basato sul metodo LABELING. Supponiamo che non ci siano vincoli né sul
valore dei pesi, né sulla topologia (presenza di cicli), né sull’orientazione degli archi.
BELLMAN-FORD ( , , )
INITIALIZE-SINGLE-SOURCE ( ,
for
1 to | |-1 do
)
for each (
do
RELAX ( , , )
)
for each (
do
[
]
[ ]
(
) then
if
return false
return true
)
(| |)
(| |)
//rileva la presenza di cicli di peso negativo
(| | | |); l’ultimo ciclo ha
I primi due cicli annidati hanno una complessità totale di (| |) (| |)
(|
|):
(|
|
|
|)
(|
|)
(| | | |), e nel caso
complessità
in totale, l’algoritmo ha complessità
(| | ) diventa (| | | | )
(| | ). Si raggiunge tale complessità cubica
peggiore, quando | |
anche nel caso in cui usano matrici di adiacenza per descrivere il grafo.
Prop.
〈
〉 cammino minimo per andare da a , cioè ( )
( ).
Sia
Allora dopo la -esima iterazione del ciclo esterno dentro cui si fanno le | | RELAX, il nodo è andato a
(
).
convergenza, cioè vale [ ]
Dim.
Per induzione su =numero di iterazioni fatte.


〈 〉 〈 〉. Banalmente
Passo base:
è andato a convergenza, poiché la procedura
(
)
di inizializzazione ha posto
;
)-esima passata
Passo induttivo: siano andati a convergenza i nodi
; provo dopo l’(
di RELAX, anche
sarà andato a convergenza; nella nuova passata, infatti, applicherò, fra le
altre, anche RELAX( ,
, ). Siccome è presente in un cammino ottimo che va da
a
]
(
) .
, allora per la proprietà di convergenza varrà dopo che [
Prop.
Se contiene cicli di peso negativo raggiungibili dalla sorgente, allora l’algoritmo di BELLMAN-FORD
restituisce false, altrimenti true.
Dim.


Il grafo non contiene cicli di peso negativo raggiungibili da : allora subito dopo le numerose
( )
RELAX del doppio ciclo annidato, varrà: [ ]
.
[ ]
[ ]
( )
( )
(
)
(
)
Ma per la proprietà triangolare vale anche:
( )
( )
(
)
Quindi vale la catena di diseguaglianze:
[ ]
( )
( )
(
)
(
)
( )), estendo la catena:
E poiché anche , come tutti i nodi è andato a convergenza ( [ ]
[ ]
[ ]
( )
( )
(
)
(
)
Compattando la catena si ha:
[ ]
[ ]
(
)
Cioè, non vale mai
[ ]
[ ]
(
)
E siccome, quella è l’unica condizione, verificata la quale, si entra nel ramo then dell’if per restituire
false, non restituirò mai false, supererò con successo il ciclo, e restituirò infine true;
Il grafo contiene cicli di peso negativo raggiungibili da . Scegliamone uno e chiamiamolo :
〈
〉 ove
(
)
. ( ) ∑
(per ipotesi).
Per assurdo, supponiamo che l’algoritmo restituisce true. Questo vuol dire che tutti i test sono falsi
[ ]
(
) (
)
nell’ultima parte, quindi: [ ]
. Essendo vero per tutti gli archi, sarà
vero a maggior ragione per gli archi appartenenti al ciclo di peso negativo . Quindi:
[
]
[ ]
(
)
Ora notiamo che vale la seguente implicazione:
∑ (
(∑ [ ])
)
(∑ (
))
(∑ [ ])
∑ [ ]
Ma:
(∑ [ ])
Per ipotesi assurda: [
∑ [
]
]
(∑ (
[ ]
∑( [ ]
∑( [ ]
))
(
(
))
), il che implica:
(
))
∑ [ ]
∑ [
]
∑ [ ]
Rimaneggiando opportunamente l’indice della sommatoria al primo membro e compattando si ha:
(∑ [ ])
[
]
∑ [ ]
∑ [
]
∑ [ ]
(∑ [ ])
Compattando ancora otteniamo:
(∑ [ ])
[
]
(∑ [ ])
[ ]
[ ] giungendo, infine, a:
Sottraiamo a entrambi i membri la stessa quantità ∑
[ ]
[ ]
[ ]
[ ] .
Assurdo! Poiché era
[ ]