From e07f0c22793d283e02dc2295ee0f46adcdbacb90 Mon Sep 17 00:00:00 2001 From: Gianluca <gianlucamastrolonardo10@gmail.com> Date: Fri, 29 Mar 2024 09:23:32 +0100 Subject: [PATCH] we made it --- .../Lab2/out/production/Lab2/BFS.class | Bin 5770 -> 4960 bytes .../Lab2/out/production/Lab2/Main.class | Bin 2234 -> 2259 bytes Algoritmi_2/Laboratorio/Lab2/src/BFS.java | 24 ++++++++++++------ Algoritmi_2/Laboratorio/Lab2/src/Main.java | 4 +-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class index 041e207f9977a33c57a19c4ac323e3e47dc23d2a..67cbb26ec9b958a1820c0acbcb642b8ac0673edd 100644 GIT binary patch delta 1644 zcmZ9M{Zmv`7{|Z&a(C~tEJ!q|%Pvr2IPMDl5R_g4-x!n8XeLco{fSwPwp>7#sO)7+ z%L*&7>r0v`nTWmo08=b#mRi=3&6N3jGyNGgV_V<np5^#5J9GA&`@Ed*=Q-y&L-l{v z1+V2Vd=Fq1zM2d=)`Lkb3nGA22+!g<0~N`xbUK~t>3uxalS=otr~7sqXmxk_?{i0s z7uGG`wsrC5AS#g#p$Clyg8e(vy@NY8bY%u4O<xGR(C_~1Yo1?;2622ogh9MuAkeja z``T20X24zLpZ|4_{}00$a#serjU(>az?8AEu!Uo8+v-}ueOWxfbS8xw97_=5EWo)B zFLHc|tF`<t_F!xpMl3!Bdy*>?yE&GjNGz}zSBz4;%+*}wjaTq0S7LpQR)fDRUZ;&Y zjUO0SOxxv{+a0=U>~@!wZp=#Xlid6eYVij4aP~Bw!d}jN$Y34b#9Q!7kWPIW`)D;# zgHQ1`-eK}ayoYx&#PltU+|QMT_Zf3Pzo;A^Fo*IVroZwUq1S<xbgPDcULH+0Ds6md zBc4ZtVWY*yn&p4PG~v?6#6fPEz!r|ea+SftGUH||;%=(!6mddxI&Z^?5$6zbQjAeJ zgV>;PW;D)B0jCyY9)yWFKJg%muoNRWj3Wgcsj<o-ILd2;hzB%-vp^Bp_$ZGh1&9?M zgor;X;$5q}onkx6Yt~5ZV@wWiG<$GM3v%S!G1ghCYvE&xP#ak==gnoF;}j{`CdzLx z+unPg(CEWhTtH89Pleux^&0((-s_4+KcUeN7tmYie}Y#?our_v912~$?nH0Y=w-Li zTRn7By2cZmsklzDZTH?Tc99mlS&MDgVlQd2m$ca9TI@kBb`Qm#yhE(yP-4aFF0t9! zb4uP4+guRKmx8o%$;x@m0iI4GS~ZH|u&>D4G#QWP(0v}w1{{Cbe;%t19_uohJ!Y^; zsvSFQh3y<_J7aPAZ>r+jm%}p*fA}c;;|PVVToyY!$N&3LdfM`Ox`D3%aGFgw#@;={ z)i<ce6q=Aj8>V@D=g@%**o2Gd#CKlLuY*mWMHuBhw?(F|Rf4T~k`<S4r@Tufv(Gq_ zmm`7GS@x~myM$LtpVzJOTzEzd(<Ya?0#?aQl&}$R;t?Cw|F9aW8OP{*2IHzu_>*;# zH^PZTN8vLjVv!trJHAEbmT5#C%erVezF2)EI$H_h&m5CNM9!fqhk>v)!EjZHI<K#P zVkLei)h~SCuJLvI6%qV~I{c0XT*srh;Z>kjZL7H*-8>G?dfcU~kkq1xITo^)1v`S8 f6?btf<1F_an06iy*+{B4sQ~>sp}(L`6JP!hU_>MZ delta 2316 zcmaKs{ZmwB6vw~Mvb%R#mKT%21q6Io$Y{owQBa&>RG3UMO44ek+p^)paxd*(FnnQ4 z%gQXYi>7I6nOSNjsH<oxlo{Ha_B#FMpV4SzeV@I{1+r;?<=N+)=bX>^KIc3)rf!|- zy?XoH1pxQs_a1M#GqwgH1x-FoK(oM@CbeBH3#(dV*#o*B4yu|!&h*tYmff*m;Y9%R z70@9&VQe!(;j$_{91aGIkglbn1^0T9hv$5Vz%AekFkB=R2HF&~`>+<z3uHCL?1Xh4 zQ6tzQkfOI40(V;}Lwec6k&tH88IhpcQgIi-*ZHs>8w7G&)aGE7t_4)1K4h%nDr%^j z5fzv=eFSffW&|69k&2NuFj`1!WC@*^6;tqn4==(mFg8)h=#&CVs{{yZUU;zChnMiO zxx$(2STWta;hbo0bLN@{-Psc>W~`LezT(5Hm@422=$fI1w5U9_)rZ%y%^Y+t@O0u$ znXJp~61jPa6FYo(3tc>+HZ&{=MWU>IstldI<3PsA)vjYg95&rbqv$m?<+ORgJs~4` zGZmE;0_%q;a?GbZIV36e4x7z3&z2ZP=8h3HB5LbHL1T^H5cS}yKw4#GW$|*oK`$>B znQnaN#rOC@!H-hiYXXypZ#<;6>&?M3OEgRHC2GLXBOL;}M@pS^w6avIT0=M(jZI#r z>&<Pg6(g=BDgTI_Q70emXbt{{`x7JlYoBRin~l2DWQZy?9Igu)L2Bcx(X`;xk*cs7 zjRvC%eioQ=M^&R>ldKAU6)60FR{^(Gn0d?NcbO3AHvOsj^LMgCGmyehFP!ip73tW; zZ#i%z_TI*B{+HH0v<m*bgT1tMn=Pr=#ZGgPw=O3AA7S6@#3by)yIehs$FQF(7ow=f z0UU&zKK&Sq){pmS6)58W_i>2vW@8&Zz+sXs#AbYmBc%C=XNtLF#rT*pEdQhQx4e$g z>v$I33gOPZjX4VP6ntV%NE<umQ|>zO8IwGYRs8HW7pMI};38lB2;dR|pCE9EJ{E90 zmf66AHt=8)coGpMrURucKw_p~9=4+gy-8pxoE1X?TVBWLb=;;bpGZapr3y~o#yvv8 zLIqWe{)EGkfIXFf%}uW%teRd_E7dJwa4^x3e)Ezza_=-jq<&7s31KC2!jYT9IA?HH zMgzoYT2dKfz+915YTiuW%jml@YHcaHFe52NfPz_4wBkWqiUB+KfGx#-TZ&ytDHig% z>0_T*cPFK=Vpvj0uhCM>wx!4zmZCBtg+snU2`RQ@UL$OM)=1cCHtb3pw#J6NXv1E# zVfWdv-8Sqd!k!xiD`Qx&((7Nae0r^W3k<_9NW$`&Wwlc2CA@YImF_GUe-Igdm-8$d z<Cs+6Q(6#5xF0Qj&;_T-<9Ei<n%L~a0)cY3-`$4?q-n8SEfpM?!g9s$^eggwFJe)@ zat<BfMQ<!AmAiAs)9Q+2(@>f%d*D98-@niF5W&fj1m<$2!RlS?+e}uKg`*s+<Cwy( zUCNfJ#YsGgQ)p%@t!3<WY?_T!MmAnG6#C4<c}|HE<3^_~Z6`jbcp|a)MWP3#^#WJ& zHR;4f&b92?PNqJ@<Z_y=S4G;6+O~e$<Zxucm6iP$(l`vaP<@kXS|dEb9ADxqeveUJ zT&BG8F_~MEAIEFU&m(Wu85EQ|hZe40L}$kFM#;?lf+2C7`DZacj_rQu37$+zs8Yzv zz`$;X&cr2*W8@+Xa@4M{-m8h~E3HgJC2ydV*1IJ|y_Bfgjr$Thq%g=d3My+J$LDBt q&6Z8pY}sVZR&`$!=Q2SY_=d^B&Jp;Qe^+pw-@IJ?gkSI*{Qm&MY9X2c diff --git a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class index bf9286671bb03c9fefd0e19a3864335107bfa92c..5e26f2131cf76a898d2078414f54b1b3e7357322 100644 GIT binary patch delta 212 zcmXBMyG{aO7=+;$2`peZET_;pg&oZ<ET?=46{SK<5MAl1xB)7REe#1+;Z0bPNa9U! zLvDV{$viVZ{?*^FX45b*1qw}}I;M`grmiAWq@Jm#zNxQ)X`rELsF7(Tw{X}wM_e1& z_vtr#S0hUX_`Kl7)%=;;hYO{+eWvo59(#w4_x04G$UP-O%1o&6g3p>NTk0HXGE4T+ g{|j@TlT={GB5^5deDF%l4GrFTV@aCUVU?Tz0VZE19smFU delta 187 zcmXYp%L)N;97Yc^Zehl)?0y?78*?-1Uv_pR<u>f?JOi?|5V7(S7Mh~GgcmXso74Bz z>3oc*aa_5M*;3LHQ;8{71UG`C#QMShFIzfFT=A56(!M|5npDt80@oKQzmy5c^<NbH zW`I6Obam}~O5H|v@-!%5QKW~?9D_9_wp6%KV;BaUUxqQ0@MSqLWk!rL`_T7^Q)S13 LB?;>1O?vzVSqC7N diff --git a/Algoritmi_2/Laboratorio/Lab2/src/BFS.java b/Algoritmi_2/Laboratorio/Lab2/src/BFS.java index e42eb55..82eb4e9 100644 --- a/Algoritmi_2/Laboratorio/Lab2/src/BFS.java +++ b/Algoritmi_2/Laboratorio/Lab2/src/BFS.java @@ -159,27 +159,31 @@ public class BFS { return alberoBFSdallaSorgente; } - private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path, ArrayList<Boolean> founded) { + private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path, boolean[] founded) { //Se ho trovato il nodo if (sorg == dest) { - founded.add(true); + founded[0] = true; return; } //Se sono nella foglia sbagliata + /* if (((Collection<?>) bfsAlbero.getNeighbors(sorg)).isEmpty()) { //Pulisco il percorso corrente perché errato path.clear(); } + */ + //Allora devo ancora esplorare for (Integer node : bfsAlbero.getNeighbors(sorg)) { path.add(node); - System.out.println(">>> Nodo: " + node); cammminoMinimoImpl(bfsAlbero, node, dest, path, founded); - if (founded.contains(true)) { + if (founded[0]) { break; + } else { + path.removeLast(); } } } @@ -189,16 +193,20 @@ public class BFS { //L'idea è quella di usare il BFS Albero, perché aciclico, ed in questo modo trovare il percorso. //Provo con la ricorsione - //Implementazione sbagliata, ma l'idea credo sia giusta + + if (sorgente == destinazione) { + return null; + } DirectedGraph bfsAlbero = bfsTreeDirected(sorgente); ArrayList<Integer> returnArray = new ArrayList<>(); - ArrayList<Boolean> founded = new ArrayList<>(); + boolean[] founded = new boolean[1]; - System.out.println(bfsAlbero); cammminoMinimoImpl(bfsAlbero, sorgente, destinazione, returnArray, founded); - returnArray.addFirst(sorgente); + if (!returnArray.isEmpty()) { + returnArray.addFirst(sorgente); + } return returnArray; } } diff --git a/Algoritmi_2/Laboratorio/Lab2/src/Main.java b/Algoritmi_2/Laboratorio/Lab2/src/Main.java index 5b21021..cf2b97b 100644 --- a/Algoritmi_2/Laboratorio/Lab2/src/Main.java +++ b/Algoritmi_2/Laboratorio/Lab2/src/Main.java @@ -5,10 +5,10 @@ import java.util.Arrays; public class Main { public static void main(String[] args) { - Graph mioGrafo = new UndirectedGraph("10; 0 1; 1 2; 1 5; 1 4; 2 4; 2 3; 2 4; 3 9; 5 7; 7 6"); //Num Nodi + Archi + Graph mioGrafo = new UndirectedGraph("10; 0 1; 1 2; 2 3; 3 4; 4 5; 5 6; 6 7; 7 8; 8 9; 9 0; 0 2; 2 4; 4 6; 6 8; 8 0;"); //Num Nodi + Archi BFS mioBFS = new BFS(mioGrafo); int source = 0; - int destination = 6; + int destination = 4; System.out.println(">>> Sorgente delle Operazione: " + source); System.out.println(">>> Destinazione delle Operazione: " + destination); -- GitLab