ในปัญหาปั้มน้ำมันเราได้รับเมืองเมืองและถนนระหว่างทั้งสอง ถนนแต่ละสายมีความยาวและแต่ละเมืองกำหนดราคาน้ำมัน ถนนหนึ่งหน่วยมีราคาน้ำมันหนึ่งหน่วย เป้าหมายของเราคือไปจากแหล่งต้นทางไปยังปลายทางด้วยวิธีที่ถูกที่สุด รถถังของเราถูก จำกัด ด้วยค่าบางอย่าง
ฉันพยายามเข้าใจอัลกอริธึมดังนั้นฉันจึงจดขั้นตอนเพื่อคำนวณวิธีแก้ปัญหาด้วยตนเอง น่าเสียดายที่ฉันติดอยู่ - ในบางจุดไม่มีขอบที่ต้องพิจารณาฉันไม่รู้ว่าทำไม
ตัวอย่าง:
ถนน:
0 ----------- 1 ------------ 2 -------------- 3
(ไม่ได้ ต้องง่ายขนาดนั้นมันอาจเป็นกราฟใดก็ได้เช่นอาจมีถนนระหว่าง 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 หน่วย
ทางออกที่ดีที่สุด:เติม 9 หน่วยที่ 0 และ 8 หน่วยที่ 1 ราคารวมแล้วเป็น 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?
การเกิดซ้ำจากเอกสารดูเหมือนจะไม่ทำงานหรือมีแนวโน้มที่ฉันจะทำอะไรผิด
มีใครช่วยฉันได้บ้างไหม