Dalam masalah pompa bensin kita diberi kota dan jalan di antara mereka. Setiap jalan memiliki panjang dan setiap kota menentukan harga bahan bakar. Satu unit jalan menghabiskan satu unit bahan bakar. Tujuan kami adalah beralih dari sumber ke tujuan dengan cara semurah mungkin. Tangki kami dibatasi oleh beberapa nilai.
Saya mencoba memahami algoritma , jadi saya secara manual menuliskan langkah-langkah untuk menghitung solusinya. Sayangnya saya macet - pada titik tertentu tidak ada batas untuk dipertimbangkan, saya tidak tahu mengapa, mungkin saya kehilangan sesuatu.
Contoh:
jalan:
0 ----------- 1 ------------ 2 -------------- 3
(tidak harus sesederhana itu, bisa berupa grafik apa pun yaitu mungkin ada jalan antara 0 - 2, 0> 3, 1 -> 3 dll.)
Sumber: 0, Tujuan: 3, Tangki: 10 unit
Harga bahan bakar: 0 : 10 unit, 1 : 10 unit, 2 : 20 unit, 3 : 12 unit
Panjang: 0-> 1 : 9 unit, 1-> 2 : 1 unit, 2-> 3 : 7 unit
Solusi optimal: isi 9 unit pada 0 dan 8 unit pada 1. Total biaya kemudian adalah 170 unit (9 * 10 + 8 * 10).
Jadi saya mencoba menghitungnya seperti yang ditunjukkan di sini (paragraf 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?
Pengulangan dari dokumen sepertinya tidak berfungsi atau lebih mungkin saya melakukan sesuatu yang salah.
Adakah yang bisa membantu saya dengan ini?