very Le 26/07/2008 à 23:39 ha ok.
( valeur absolu c'est pas super linéaire mais bon si tu le dis ça doit marcher )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard
La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.
onur Le 26/07/2008 à 23:42 Oui c'est pas linéaire, mais en explicitant x = abs(y) comme x>=y et x>=-y on s'en sort. Y a des trucs non-linéaires où tu peux feinter comme ça en ajoutant des variables avec des contraintes: abs, max, min, etc...
edit: et au fait, un programme linéaire en nombre entiers comme ça, ça fait déjà du branch&bound dans la babasse. Il fait des simplex avec la contrainte d'integrité relachée à chaque noeud. Ce que je voulais dire c'est qu'on pourrait lui montrer un algo branch&bound qui résoud directement son problème plutôt que le PLNE lui correspondant (vu qu'il a pas l'air d'être à l'aise en R.O.)
Tout ce qui passe pas par le port 80, c'est de la triche.
very Le 26/07/2008 à 23:56 ( tant qu'on a des trucs linéaires par morceaux on arrive à bricoler quoi ? -- tu m'excuses j'ai séché les cors de prog. linéaire)
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard
La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.
onur Le 27/07/2008 à 02:15 very > le simplex est polynomial
PL normal: simplex
PLNE : branch&bound avec des simplex à chaque noeud
Tout ce qui passe pas par le port 80, c'est de la triche.
very Le 27/07/2008 à 02:19 non c'est exponentiel dans le pire des cas. (tu vois bien que notre problème là est NP-complet ... )
En pratique c'est souvent "rapide", s'too.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard
La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.
onur> l'algo du simplexe n'est pas polynomial (mais il y a des algos polynomiaux pour la PL à variables réelles)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
onur Le 27/07/2008 à 10:49 ok, je crois que me souvenir que simplex est polynomial mais que c'est pas démontré, c'est ca?
Tout ce qui passe pas par le port 80, c'est de la triche.
Non, pour un système dégénéré, le simplex est démontré être exponentiel.
En fait y a pas un unique algo mais une famille d'algos ; les plus courants sont exponentiels, et on ne sait pas s'il y en a des polynomiaux, c'est peut-être à ça que pensait Onur.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
onur Le 28/07/2008 à 17:26 En fait, cest pas tout à fait le knapsack, si?
dans le sac à dos, on maximise la valeur du sac, là il veut minimiser sa distance à N.
Tout ce qui passe pas par le port 80, c'est de la triche.
Je n'ai pas lu vos pages. L'algo auquel je pense trouverait la solution en (N-1)+(N-2)+...+(N-(N-1)) tests. Ca fait bien N(N-1)/2 opérations ?
On a bien un truc grosso-modo exponentiel.
Sur une liste de 10 nombres, on aurait besoin de 45 opérations. Les algos que vous proposez font mieux ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
Jyaif Le 28/07/2008 à 19:18Edité par Jyaif le 28/07/2008 à 19:20 oui ca fait qlqchose comme N(N-1)/2, mais c'est pas tellement exponentiel ^^
Thibaut, sont-ce des paires de nombres que tu essaies d'additionner là? Pour résoudre le problème, il faut aussi prendre en considération les sommes de plus de deux nombres!
Oui oui.
Jyaif : Ca s'approche de N². C'est pas ça un algo exponentiel ? On appelle ça un algo quadratique ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
n^2 est un algo quadratique.
2^n est un algo exponentiel.
Sally Le 28/07/2008 à 19:45 oui exponentiel ça veut dire que N est en exposant.
Quadratique veut dire que N est au carré, cubique qu'il est au cube, polynomial que la complexité est de l'ordre d'un polynôme en N (ce qui revient en fait à être O(N^k) pour un certain k, les autres puissances n'étant pas significatives)

« Le bonheur, c'est une carte de bibliothèque ! » —
The gostak distims the doshes.Membrane fondatrice de la confrérie des
artistes flous.
L'univers est-il un
dodécaèdre de Poincaré ?
(``
·\ powaaaaaaaaa ! #love#
onur Le 28/07/2008 à 19:47 Moi je pense à un truc comme ça:
On trie le tableau d'entrée par ordre décroissant (n log(n)) jusque là on est bon.
On déclare deux variables où on met:
meilleurSol == la meilleure solution trouvée (c'est une liste qui est un sous-ensemble de la liste de début)
meilleurSolVal == la valeur de cette solution (la somme des nombres qu'il y a dedans)
f(i) {
si (i> tableauDuDebut.length) return;
On regarde l'élément n° i, est-ce que son ajout à meilleurSol donne une meilleure solution? (est-on plus proche de N?)
Si oui, on dit meilleurSol = meilleurSol + {premier élément}, et appelle f(i+1)
si non, return;
}
au début, on appelle f(0)
... un truc du genre.
Tout ce qui passe pas par le port 80, c'est de la triche.
onur Le 28/07/2008 à 19:49 Bon, le fait de mettre dans l'ordre décroissant ne sert à rien, je pensais encore au cas où on ne doit pas dépasser N et éliminer la solution et la suite du tableau à partir de l'indice i+1, si jamais ca dépassait N.
Mais bon, grosso modo l'idée est là, je pense que tu peux t'en sortir avec un truc comme ça.
Tout ce qui passe pas par le port 80, c'est de la triche.
On ne fait pas un parcours linéaire du tableau dans ce cas ? Autrement dit, on ne testerait que N solutions parmi N(N-1)/2

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.