<prompt> Andika hati ya Python inayokokotoa njia fupi kati ya pointi mbili kwenye gridi ya 2D kwa kutumia algoriti ya Dijkstra, kwa kuzingatia vikwazo vinavyowakilishwa na seli zilizozuiwa.PLINFORMAT  <response>: kuagiza rundodef shortest_pathgridi, anza, mwisho: def in_boundspoint: x, y uhakika rudisha 0 x lengridi na 0 y lengridi0 def passablepoint: x, y uhakika return gridxy ! B def majiranipoint: x, y uhakika matokeo x dx, y dy kwa dx, dy katika -1, 0, 1, 0, 0, -1, 0, 1 matokeo kichujio katika_mipaka, matokeo matokeo kichujio kinachopitika, matokeo kurudisha matokeo def gharama ya sasa, inayofuata: kurudi 1 mpaka heapq.heappushmpaka, 0, anza came_from dict cost_so_far dict came_fromstart Hakuna cost_so_farstart 0 wakati mpaka: _, sasa heapq.heappopmpaka ikiwa sasa mwisho: mapumziko kwa jirani ya sasa: new_cost cost_so_farcurrent costcurrent, next ikiwa ijayo si kwa cost_so_far au new_cost cost_so_farnext: cost_so_farnext new_cost kipaumbele new_cost heapq.heappushmpaka, kipaumbele, kinachofuata came_fromnext sasa ikiwa mwisho haukuja_kutoka: kurudi Hakuna njia mwisho huku njia-1 ! kuanza: path.appendalikuja_kutoka-njia-1 njia.reverse njia ya kurudigridi S, ., ., ., ., , B, B, B, ., , ., ., B, ., B, B, ., B, ., , ., ., ., E,kuanza 0, 0mwisho 4, 4njia fupi_njiagridi, anza, mwishoprintNjia fupi:, njia 