Mi sono imbattuto in una domanda come segue:Output di codice su grafico e alcune affermazioni sul concorso locale?
Abbiamo un codice su grafico ponderato, acicliche G(V, E)
con bordi positivi e negativi. cambiamo il peso di questo grafico con il seguente codice, per dare un G
senza margine negativo (G')
. se V={1,2...,n}
e G_ij
essere un peso del bordo i a bordo j.
Change_weight(G)
for i=i to n
for j=1 to n
c_i=min c_ij for all j
if c_i < 0
c_ij = c_ij-c_i for all j
c_ki = c_ki+c_i for all k
Abbiamo due assiomi:
1) il percorso più breve tra ogni due vertici in G è uguale a G'.
2) la lunghezza del percorso più breve tra ogni due vertici in G è la stessa di G '.
Vogliamo verificare queste due frasi. quale è Vero e quale è falso Chi può aggiungere qualche indicazione sul perché questi sono vere o false?
mia soluzione:
Credo due è falso come seguendo contro esempio, il grafico originale è dato a sinistra, e dopo l'algoritmo viene eseguito, il risultato è proprio il percorso più breve tra 1 a 3 cambiato, è passato dal vertice 2, ma dopo l'algoritmo viene eseguito non è mai passato da vertice 2.
Non sono sicuro del codice, in 'c_ij = c_ij-c_i per tutti j' a cui si riferisce? La variabile di loop o la variabile "for all' j'"? Allo stesso modo per 'c_i = min c_ij per tutti j' – amit
Penso che il peso del bordo' 1-> 2' dovrebbe essere '1 - (- 2) + (- 4) = - 1' dopo l'esecuzione dell'algoritmo. – Heike
@Heike sì, penso di aver sbagliato ... –