<prompt> Unda programu ya Java inayotekelezea algoriti ya utafutaji ya A ili kupata njia fupi zaidi katika gridi ya P2 iliyo na vizuizi. Programu inapaswa kusoma gridi ya taifa kutoka kwa faili ya maandishi, ambapo kila seli inawakilishwa na tabia 0 kwa seli za bure, 1 kwa vikwazo, na kuonyesha njia inayotokana na console.PLINFORMAT  <response>: agiza java.io.BufferedReader;agiza java.io.FileReader;agiza java.io.IOException;agiza java.util.;nodi ya darasa int x, y; g mara mbili, h, f; Mzazi wa nodi; Njia ya umma int x, int y hii.x x; hii.y y; darasa la umma la AStarSearch faragha tuli ya mwisho Kamba FILENAME grid.txt; gridi tuli ya kibinafsi gridi; Nodi ya tuli ya kibinafsi startNodi, endNode; public static void mainString args inarusha IOException readGridFromFile; List path aStarSearchstartNode, endNode; printPathnjia; utupu tuli wa kibinafsi readGridFromFile hutupa IOException BufferedReader br new BufferedReadermpya FileReaderFILENAME; List lines new ArrayList; Mstari wa kamba; wakati line br.readLine ! null mistari.ongezamstari; br.funga; safu za int lines.size; int cols lines.get0.length; gridi char mpyasafucols; kwa int i 0; i aStarSearchMwanzo wa Njia, Mwisho wa Njia Foleni ya Kipaumbele openList Foleni mpya ya KipaumbeleComparator.comparingDoublen - n.f; HashSet closedList HashSet mpya; start.g 0; start.h heuristickuanza, mwisho; start.f start.g start.h; openList.ongezaanza; wakati !openList.isEmpty Nodi ya sasa openList.poll; closedList.ongezasasa; ikiwa current.x end.x current.y end.y return buildPathsasa; kwa Jirani ya Njia: getNeighborssasa ikiwa List.closed.containsjirani itaendelea; mara mbili tentativeG current.g 1; ikiwa !openList.containsneighbor tentativeG jirani.g jirani.g tentativeG; jirani.h heuristic jirani, mwisho; jirani.f jirani.g jirani.h; jirani.mzazi sasa; ikiwa !openList.containsjirani openList.ongezajirani; kurudi null; Hakuna njia iliyopatikana Orodha ya tuli ya kibinafsi buildPathNodi nodi List path new ArrayList; wakati nodi ! null njia.ongezanodi; nodi nodi.mzazi; Makusanyo.reversenjia; njia ya kurudi; kibinafsi tuli kiheuristic Nodi a, Nodi b rudisha Math.absa.x - b.x Math.absa.y - b.y; Orodha ya tuli ya kibinafsi getNeighborsNodi nodi int maelekezo -1, 0, 1, 0, 0, -1, 0, 1; Orodha majirani ArrayList mpya; kwa int dir : maelekezo int x nodi.x dir0; int y nodi.y dir1; ikiwa isValidx, y gridxy ! 1 majirani.ongezaNjia mpyax, y; kurudi majirani; boolean tuli ya kibinafsi isValidint x, int y return x 0 x grid.length y 0 y grid0.length; uchapishaji wa utupu wa tuli wa kibinafsiOrodha njia ikiwa njia null System.out.printlnHakuna njia iliyopatikana; kurudi; kwa nodi ya nodi: njia gridnode.xnode.y ; gridstartNode.xstartNode.y S; gridiendNode.xendNode.y E; kwa char safu : gridi ya taifa kwa char cell : safu System.out.printseli; System.out.println; 