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