<prompt> Unda programu ya Java ambayo hutengeneza mpangilio nasibu wa saizi fulani safu na safu wima kwa kutumia algoriti ya utafutaji wa kina-kwanza, na kisha kupata njia fupi zaidi kutoka kona ya juu kushoto hadi kona ya chini kulia kwa kutumia algoriti ya utafutaji ya upana-kwanza.  <response>: Hapa kuna programu ya Java ambayo hutengeneza mlolongo wa nasibu kwa kutumia kanuni ya utafutaji ya kina-kwanza na kupata njia fupi zaidi kutoka kona ya juu kushoto hadi kona ya chini kulia kwa kutumia kanuni ya utafutaji ya upana-kwanza: javaagiza java.util.ArrayList;agiza java.util.Collections;agiza java.util.LinkedList;agiza java.util.List;agiza java.util.Foleni;agiza java.util.Nasibu;MazeGenerator ya darasa la umma faragha tuli ya mwisho int UKUTA 0; faragha tuli ya mwisho int PATH 1; faragha tuli ya mwisho int VISITED 2; faragha tuli final int DX -1, 0, 1, 0; faragha tuli final int DY 0, 1, 0, -1; utupu tuli wa umma String args safu za int 10; safu wima 10; int maze generateMazesafu, nguzo; printMazemaze; List shortestPath findShortestPathmaze; System.out.printlnNjia fupi zaidi:; kwa int point : shortestPath System.out.printfd, dn, point0, point1; private static int generateMazesafu wima, safu wima int maze intsafusafu mpya; kwa int i 0; i maelekezo new ArrayList4; kwa int i 0; i 4; i maelekezo.ongezai; Mikusanyiko. Changanyamaelekezo, nasibu; kwa int direction : directions int nx x DXmwelekeo 2; int ny y DYmwelekeo 2; ikiwa isValidmaze, nx, ny mazenx - DXmwelekeony - DYmwelekeo NJIA; dfsnasibu, maze, nx, ny; kibinafsi tuli boolean isValidint maze, int x, int y return x 1 x maze.length - 1 y 1 y mazex.length - 1 mazexy UKUTA; faragha tuli utupu printMazeint maze kwa int row : maze kwa int cell : safu System.out.printcell UKUTA ? : ; System.out.println; Private tuli List findShortestPathint maze Foleni foleni new LinkedList; queue.offerintmpya1, 1, 0; wakati !queue.isEmpty int current queue.poll; int x sasa0; int y sasa1; int distance sasa 2; ikiwa x maze.length - 2 y mazex.urefu - 2 List path new ArrayListumbali 1; wakati sasa ! null path.add0, int mpyacurrent0, sasa1; sasa sasa3 0 ? mazecurrent0 DXcurrent3current1 DYcurrent3 : null; njia ya kurudi; kwa int direction 0; mwelekeo 4; mwelekeo int nx x DXmwelekeo; int ny y DYmwelekeo; ikiwa isValidForBfsmaze, nx, ny mazenxny WALIOTEMBELEWA; queue.offerintmpyanx, ny, umbali 1, mwelekeo 2 4; rudisha Collections.emptyList; binafsi tuli boolean isValidForBfsint maze, int x, int y return x 0 x maze.length y 0 y mazex.length mazexy PATH; Mpango huu kwanza hutoa mlolongo wa nasibu kwa kutumia kanuni ya utafutaji ya kina-kwanza. Kisha hupata njia fupi zaidi kutoka kona ya juu-kushoto hadi kona ya chini kulia kwa kutumia algoriti ya utafutaji ya upana-kwanza na kuchapisha maze na njia fupi zaidi.Unaweza kubadilisha vigeu vya safu mlalo na safu katika mbinu ya kuu ili kuzalisha misururu ya ukubwa tofauti. 