Dijkstra per favorire la soluzione con il minor numero di spigoli se più percorsi hanno lo stesso peso


9

Puoi modificare qualsiasi grafico G in modo che Dijkstra's trovi la soluzione con il numero minimo di spigoli così:

Moltiplicare ogni peso del bordo con un numero , quindi aggiungere al peso per penalizzare ogni bordo aggiuntivo nella soluzione, ad esa1

w(u,v)=aw(u,v)+1

Questo non funziona per tutti i valori di ; deve essere almeno affinché funzioni. Se non è questo numero minimo, potrebbe non scegliere il percorso più breve. Come trovo questo valore minimo ?aaxax

Ps. Questo è stato fatto a livello ricreativo, ho fatto i compiti molto tempo fa.


Se due percorsi hanno lo stesso peso, scegliere quello con il minor numero di spigoli. Scusate. Vedo che non l'ho chiarito.
The Unfun Cat,

1
Puoi anche farlo aggiungendo a tutti i pesi dei bordi, dove , m = peso minimo del bordo, e = numero di bordi nel percorso più breve (o anche nel complesso, se non conosci il percorso più breve lunghezza) . ϵϵ<m/e
BlueRaja - Danny Pflughoeft,

1
Bocconcino interessante, grazie. Dovrà guardarlo.
The Unfun Cat,

Risposte:


5

Dato un grafico G=(V,E,w), definiamo G=(V,E,w) con w(e)=aw(e)+1 dove a=|E|+ε per alcuni ε0 come proposto nei commenti della domanda.

Lemma
LetP un percorso dentro G con il costo C, cioè w(P)=C. Poi,P ha un costo aC+|P| in G, cioè w(P)=aC+|P|.

Il lemma segue direttamente dalla definizione di w.

Chiama il risultato di Dijkstra G P, che è il percorso più breve in G. AssumereP non era un percorso più breve con meno spigoli (tra tutti i percorsi più brevi) in G. Questo può accadere in due modi.

  1. P non è un percorso più breve in G.
    Quindi, c'è un percorsoP con w(P)<w(P). Come|P|,|P||E|a, questo implica anche questo w(P)<w(P)con sopra lemma¹. Questo contraddice questoP è stato scelto come percorso più breve in G.
  2. Pè un percorso più breve ma esiste un percorso più breve con meno spigoli.
    Quindi, c'è un altro percorso più breveP - ie w(P)=w(P) -- con |P|<|P|. Questo implica chew(P)<w(P) al di sopra del lemma, che ancora una volta lo contraddice P è un percorso più breve in G.

Poiché entrambi i casi hanno portato a una contraddizione, P è in effetti un percorso più breve con meno spigoli G.


Ciò copre metà della proposta. Che direa<|E|, cioè a=|E|ε con ε(0,|E|)?


  1. In realtà, ne abbiamo anche bisogno a o tutti i pesi in Gsono numeri interi. Altrimenti,w(P)<w(P) non causa i pesi dentro G essere almeno |E|a parte. Questa non è una restrizione, comunque; possiamo sempre ridimensionarew con un fattore costante in modo che tutti i pesi siano interi, supponendo che iniziamo con pesi razionali.

Non sono ancora riuscito a trovare una prova a=|E| è il più piccolo aper cui questo funziona. Ci penserò ancora.
Raffaello
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.