Zum Inhalt
Java-Programm
Aus ProgrammingWiki
<
AuK
<
Greedy-Algorithmen SS10
Archivierte Version vom 2010-05-11T11:24:45+00:00.
Aktuelle Version
/* Wichtig: in der Form {A,B,C,D,E,F,G}*/ int []StadtA ={0,4,9,10000,10,6,10000}; int []StadtB ={4,0,3,10000,10000,10000,5}; int []StadtC ={9,3,0,8,10000,10000,6}; int []StadtD ={10000,10000,8,0,3,9,3}; int []StadtE ={10,10000,10000,3,10000,10000,0}; int []StadtF ={6,10000,10000,9,10000,0,7}; int []StadtG ={10000,5,6,3,10000,7,0}; int []auswahl =new int[7]; int tempPfad =0; int lauf =1; int zähler =0; int set =1; int k =0; int letztesElement =0; int tempElement =0; int neuerWert =0; int []letzteStadt =new int [20]; ArrayList<Integer> Pfad=new ArrayList(); Pfad.add(0); /*beginn der Prozedur*/ while(lauf==1){ switch(zähler){ case 0:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtA[i]; };break; case 1:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtB[i]; };break; case 2:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtC[i]; };break; case 3:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtD[i]; };break; case 4:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtE[i]; };break; case 5:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtF[i]; };break; case 6:for(int i=1;i<auswahl.length;i++){ auswahl[i]=StadtG[i]; };break; } //Greedy_Algorithmus //============================================================================== for(int i=0;i<auswahl.length;i++){ //Prüfung ob die jeweilige Stadt breits besucht wurde(nur einmal pro Stadt) for(int j=0; j<letzteStadt.length;j++){ if(letzteStadt[j]==i){ set=0; } } //einfügen des Pfades in tempPfad sollte obige Bedingung erfüllt sein if(tempPfad>=auswahl[i] && auswahl[i]!=0 || tempPfad==0){ if(set==1){ tempPfad=auswahl[i]; zähler=i; } } //zurücksetzten der Variable set für den nächsten Durchlauf set=1; } //hinzufügen der besuchten Stadt //============================================================================= //benötigt man zur Pfadmodifizierung letztesElement=letztesElement+tempPfad; Pfad.add(letztesElement); //Pfad wir, falls nötig, modifiziert um die kürzeste Strecke zu suchen for(int i=1; i<Pfad.size();i++){ if(Pfad.get(i)+auswahl[letzteStadt[i]]<tempElement && k>=1 && auswahl[letzteStadt[i]]!=0){ neuerWert=Pfad.get(i)+auswahl[letzteStadt[i]]; for(int j=i;j<=Pfad.size();j++){ Pfad.remove(Pfad.size()-1); } Pfad.add(neuerWert); Pfad.add(neuerWert+tempPfad); } } letzteStadt[k+1]=zähler; tempElement=tempElement+tempPfad; k++; //System.out.println("auswahl :"+tempElement); tempPfad=0; //Prüfung ob Stadt breits erreicht wurde //============================================================================== for(int i=0;i<letzteStadt.length;i++){ if(letzteStadt[i]==3){ System.out.println(Pfad); lauf=0; } } }
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten