PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei Programmierung



ayiao
02-09-2006, 10:51
hallo zusammen, ich bin java Anfänger und habe jetzt ein großes Problem vor mir bei Programierung.
Erst möchte ich mein Problem vorstellen:
ich habe 25 Kunden und ich möchte mit maximal 10 Touren alle Kunden besuchen.
In jeder Tour kann maximal 5 Kunden besucht werden( wenn keinen Kunden in diser Tour besucht würde, würde diese Tour weggelassen). Jeder Kunde kann maximal einmal in einer Tour besucht werden und in einer zufällig erzeugter Reihenfolge. Am Ende sollte jeder Kunde in mindestens einer Tour besucht werden. Theoretisch kann jeder Kunde maximal 10 Mal in 10 Touren besucht werden, aber es wäre besser, dass jeder Kunde nur maximal 3 Mal besucht wird.
Ich habe damit hart gearbeitet, aber es ist zu schwer für mich.
Deswegen möchte ich hier fragen, ob jemand mir dabei helfen kann.
mit freundlichen Grüßen.
vielen Dank!

ayiao

anda_skoa
02-09-2006, 11:55
Wenn das alle Randbedingungen sind, seh ich kein Problem.

Da pro Tour 5 Kunden besucht werden können, einfach immer 5 Kunden aus der Liste nehmen und Tour fahren
Wiederholen bis alle Kunden besucht sind

Ciao,
_

falke2203
03-09-2006, 09:05
Ich denke viel mehr, dass es sich hier um ein algorithmisches und nicht um ein programmiertechnisches Problem handelt. Ich würde da zwischen den Zeilen ein Wege-Problem rauslesen. Sollte ich damit recht haben, helfen dir als Einstieg vielleicht folgende Links:

http://de.wikipedia.org/wiki/Hamiltonkreis
http://de.wikipedia.org/wiki/Wege%2C_Pfade%2C_Zyklen_und_Kreise_in_Graphen

ayiao
03-09-2006, 10:25
hi, ich habe mein Problem so programmiert:

import Prog1Tools.IOTools;
public class Random
{
public static void main (String[] args)
{
int [][]R=new int [11][27];
int i=1,j=1;
int [][]X=new int [11][27];
do {
for (i=1;i<11;i++)
{
for (j=1;j<26;j++)
{
double r=Math.random();
if(r>0.8)
{
R[i][j]=(int)(r*100);
}
else R[i][j]=0;
if (R[i][j]==0)
{
System.out.print(R[i][j]+" ");
}
else System.out.print(R[i][j]+" ");
}
System.out.println();
}
for (j=1;j<26;j++)
{
for (i=1;i<11;i++)
{
X[i][j]=X[i][j]+R[i][j];
}
}

}while (X[i][j]==0);
}
}

hier ist die Randbedingung, dass jeder Kunde maximal 3 mal besucht werden kann, noch nicht berücksichtigt.
leider hat es hier schon nicht funktioniert.

bischi
03-09-2006, 10:27
Was genau ist an anda_skoas Vorschlag nicht klar?!

MfG Bischi :confused: