Bonsoir,

Je cherche à générer des sous ensembles d'un ensemble fini d'Arete (objet). Ceci est dans le but d'étudier chaque sous-ensemble par la suite. En fouinant un peu j'ai trouvé cet algorithme récursif :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static Stack<String> combination(Stack<Character> characters) {
	Stack<String> result = new Stack<String>();
 
	// la liste des carateres est vide => resultat vide
	if (characters.isEmpty()) return result;
 
	// retire le 1er caractere le la liste
	Character first = characters.remove(0);
 
	// calcule les sous-combinaisons avec les caracteres restants
	Stack<String> subcombination = combination(characters);
 
	// ajoute: le caractere seul
	result.add(first.toString());
 
	// ajoute: le caractere seul devant chaque sous-combinaison
	for(String s:subcombination)
		result.add(first+s);
 
	// ajoute: les sous-combinaisons
	result.addAll(subcombination);
 
	return result;
}
 
public static void main(String[] args) {
	Stack<Character> stack = new Stack<Character>();
	stack.push('A'); stack.push('B'); stack.push('C');
 
	Stack<String> resultats = combination(stack);
	for(String s:resultats)
		System.out.println(s);
}
Le problème c'est qu'il est fait avec des caractères. Je bloque principalement à cette ligne // ajoute: le caractere seul devant chaque sous-combinaison
for(String s:subcombination)
result.add(first+s);

Je n'arrive pas à obtenir par exemple : [12, 23, 53, 14] un sous-ensemble où chaque chiffre correspond aux sommets de l'arête. Merci d'avance !