में गैस स्टेशन समस्या हम दिया जाता है शहरों { 0 , ... , n - 1 } और उन दोनों के बीच सड़कों। प्रत्येक सड़क की लंबाई है और प्रत्येक शहर ईंधन की कीमत को परिभाषित करता है। सड़क की एक इकाई ईंधन की एक इकाई की लागत। हमारा लक्ष्य सबसे सस्ते संभव तरीके से एक स्रोत से गंतव्य तक जाना है। हमारा टैंक कुछ मूल्य द्वारा सीमित है।
मैं एल्गोरिथ्म को समझने की कोशिश करता हूं , इसलिए मैंने समाधान की गणना करने के लिए मैन्युअल रूप से कदम लिखे। दुर्भाग्य से मैं फंस गया - कुछ बिंदु पर विचार करने के लिए कोई किनारा नहीं है, मुझे नहीं पता कि क्यों, शायद मैं कुछ याद कर रहा हूं।
उदाहरण:
सड़क:
0 ----------- 1 ------------ 2 -------------- 3
(यह नहीं है यह सरल होना चाहिए, यह कोई भी ग्राफ़ हो सकता है अर्थात 0- 0- 2, 0-> 3, 1-> 3) आदि के बीच सड़कें हो सकती हैं।
स्रोत: 0, गंतव्य: 3, टैंक: 10 इकाइयों
ईंधन की कीमतें: 0 : 10 इकाइयों, 1 : 10 इकाइयों, 2 : 20 इकाइयों, 3 : 12 इकाइयों की
लंबाई: 0-> 1 : 9 इकाइयों, 1-> 2 : 1 इकाई, 2-> 3 : 7 इकाइयाँ
ऑप्टिमल सॉल्यूशन: 0 में 9 इकाइयाँ भरें और 8 इकाइयाँ। कुल लागत फिर 170 यूनिट्स (9 * 10 + 8 * 10) है।
इसलिए मैंने इसे यहां दिखाए अनुसार गणना करने की कोशिश की (पैराग्राफ 2.2)
GV[u] is defined as:
GV[u] = { TankCapacity - length[w][u] | w in Cities and fuelPrice[w] < fuelPrice[v] and length[w][u] <= TankCapacity } U {0}
so in my case:
GV[0] = {0}
GV[1] = {0}
GV[2] = {0, 3, 9}
GV[3] = {0}
D(u,g) - minimum cost to get from u to t starting with g units of fuel in tank:
D(t,0) = 0, otherwise:
D(u,g) = min (foreach length[u][v] <= TankCapacity)
{
D(v,0) + (length[u][v] - g) * fuelPrice[u] : if fuelPrice[v] <= fuelPrice[u] and g <= length[u][v]
D(v, TankCapacity - length[u][v]) + (TankCapacity - g) * fuelPrice[u] : if fuelPrice[v] > fuelPrice[u]
}
so in my case:
D(0,0) = min { D(1,0) + 9*10 } - D(0,0) should contain minimum cost from 0->3
D(1,0) = min { D(2,9) + 10*10 } - in OPT we should tank here only 8 units :(
D(2,9) = min { ??? - no edges which follows the condition from the reccurence
Nevertheless D(0,0) = 90 + 100 + smth, so it's already too much.
To achieve the optimal solution algorithm should calculate D(2,7) because the optimal route is:
(0,0) -> (1,0) -> (2, 7) -> (3, 0) [(v, g): v - city, g - fuel in tank].
If we look at G[2] there is no "7", so algorithm doesn't even assume to calculate D(2,7),
so how can it return optimal solutions?
दस्तावेज़ से पुनरावृत्ति काम नहीं लगती है या अधिक संभावना है कि मैं कुछ गलत कर रहा हूं।
किसी ने मुझे इस के साथ मदद कर सकता है?