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)=a∗w(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.