Défi pour le PureBasic :)

Sujets variés concernant le développement en PureBasic
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Pas mieux et même moins car ce coup là j'ai l'écran tout tout blanc! :x
Et mon truc est bien installé j'ai été ici pour le voir
http://www.java.com/fr/download/install ... ersion=5.1
J'ai reçu les felicitations, votre logiciel est parfaitement installé :)
Ah purée, c'est pénible :roll:
Il y a un boulon dans le yaourt !
J'ai maintenant the java 2 Plateform 1.5.0 (16 mégas au chargement)
Ces environnements sont soit fournis sous le nom de JRE (Java Runtime Environment), soit comme éléments d'un JDK (Java Development Kit), ou encore Java platform
c'est super clair :)
Bon c'est quoi ce JRE par rapport au truc intallé?.
Dans cette jungle il faut prendre quoi ? :)
http://java.sun.com/products/archive/index.html

Et ai-je besoin d'installer ce J2SDK pour lire ce foutu mini prog ?

je vois sur ce lien tous les défis Double Spirale, quaddrature du cercle, etc sauf celui des 250 !
http://labo.algo.free.fr/defi250/classement.php?id=1
Est beau ce qui plaît sans concept :)
Speedy Galerie
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Test</title></head>
<body>
 <html>
    <applet code="DisplayTsp.class" width=300 height=300>
       <param name="Problem" value="custom">
       <param name = CitiesPosX value =" 1;3;5;7;4;6;8;9;10;2">
       <param name = CitiesPosY value =" 4;8;7;2;1;3;5;6;10;9">
       <param name="Parcours" value="0-4-5-3-6-7-8-2-1-9">
    </applet>
    </html>
</body>
</html> 
Le DisplayTsp.class est dans le même répertoire que mon Test.Html
Résultat tout blanc, je n'ai plus mon carré gris de 300*300 !

Voilà ce que j'obtiens en lançant la console java !

Code : Tout sélectionner

Exception in thread "Thread-130" java.lang.IllegalArgumentException
	at sun.net.www.ParseUtil.decode(Unknown Source)
	at sun.net.www.protocol.file.Handler.openConnection(Unknown Source)
	at sun.net.www.protocol.file.Handler.openConnection(Unknown Source)
	at java.net.URL.openConnection(Unknown Source)
	at sun.applet.AppletPanel.getAccessControlContext(Unknown Source)
	at sun.applet.AppletPanel.getClassLoader(Unknown Source)
	at sun.applet.AppletPanel.createAppletThread(Unknown Source)
	at sun.applet.AppletPanel.init(Unknown Source)
	at sun.plugin.AppletViewer.createClassLoader(Unknown Source)
	at sun.plugin.AppletViewer.appletInit(Unknown Source)
	at sun.plugin.viewer.LifeCycleManager.initAppletPanel(Unknown Source)
	at sun.plugin.viewer.WNetscapePluginObject$Initer.run(Unknown Source)
Apparemment y connait pas la source et moi non plus :)
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

au pire tu desinstall le JRE !!

moi je suis jamais arrivé a l'installer par telechargement ! :D
seulement a partir d'un CD de magazine ! :? (LOGIN)
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

C'est chouette comme défi alors je me lance :)

Je vais commencer par les limites, il faut donc définir le "max" de la chose.

Pour connaître le nombre de combinaisons possibles avec 250 villes il "suffit" de calculer la factorielle de 250 (càd 250!).
Le nombre est hallucinant, il fait 493 chiffres de long.
Autant dire que faire chaque combinaison prendra du temps.

Pour calculer la distance d'un parcours on fait joujou avec pythagore, rien de complexe.
D'ailleurs ici il est relativement simple et pas trop coûteux en cpu de calculer toutes les segments entre deux points et les mettre dans une matrice (tableau en 2 dimensions). Il y a 250 points qui chacun peuvent être reliés à 249 autres points ce qui nous fait 62250 segments.

Il y aura des doubles (ex: 1->250 et 250->1) mais ce n'est qu'une histoire d'optimisation.

Le principe est donc de prendre la meilleure combinaison de ces 62250 valeurs.

LA question c'est de savoir si on peut définir facilement la distance la plus courte sans forcément connaître le chemin histoire de voir la pertinance de nos algorithmes.
La réponse est OUI, mais (ben vi) au plus le nombre de villes est grand au plus cela demandera de cpu et à l'heure actuelle quand on arrive avec des centaines ou milliers de villes cela prendrait des années.
Par contre il existe des algorithmes pour estimer la distance (heuristique, génétique etc...) mais cela reste des estimations même si on approche des 100% il y a toujours une possibilité qu'il y ait un chemin plus court.

Essayons de faire un algorithme "basique".
La forme extrême est le cercle, car si l'on prend tous les points d'un cercle on peut affirmer que le chemin le plus court est de "suivre" le cercle, ce qui donne son périmètre.
Si je prends 5 points sur le cercle, je peux affirmer que la meilleure méthode est de prendre le plus petit segment, puis le plus petit suivant etc... jusqu'au dernier.

Cet algorithme a une particularité, c'est de pouvoir connaître la distance "superminimale" (j'ai pas trouvé mieux désolé).
En gros, on peut affirmer que la distance à parcourir sera TOUJOURS plus grande que la somme du plus petit segment de chaque point.

J'illustre un peu:
En dessinant un hexagone parfait (6 côtés) on a 6 points (les coins) que l'on va numéroter de 1 à 6 dans le sens horlogique.
Maintenant si je prends le chemin 1-4-2-5-3-6 on voit clairement que ça ne sera pas le plus court. Par contre le chemin 1-2-3-4-5-6 a l'air d'être le plus court car c'est la forme du cercle.

Le problème c'est qu'on a pas un cercle ni une forme parfaite.

Mon idée d'algorithme pour résoudre ça :p

Je pense que le seul moyen d'être certain de résoudre (pas d'estimer) le défi c'est d'énumérer toutes les combinaisons faute de formule magique pour calculer la plus petite distance.
Je l'ai dit plus haut ça prendrait des années, par contre il y a moyen d'optimiser la chose.
Si je prends tous les plus grands segments je suis certain de ne pas avoir la plus courte (la distance hein :D).

Faisons l'inverse !

On va donc commencer avec la "superminimale" et on va regarder si tous les points sont dans notre calcul et si il n'y a pas de point en double.
Si tous les points sont dedans et pas de double on a trouvé, ce qui est peu probable dans le défi250.

Mantenant on change chaque segment par le second plus petit.
On check de nouveau les doubles et si tous les points y sont.

Enfin, on boucle en changeant un des segments par le suivant plus petit jusqu'à la fin.
On répète jusqu'à ce qu'on ait plus de doubles et que tous les points soient dedans.

Ce n'est probablement pas la méthode la plus optimisée mais c'est certainement la méthode qui permet d'être certain d'avoir la plus courte distance.

Voilà j'ai fini ma tartine :p
Vive le thread-safe !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Bonne chance ! :D
par contre pour le nombre de segment ?
http://villemin.gerard.free.fr/Calcul/S ... tm#segment
c'est pas plutôt (250*249)/2 = 31125 :)
En fait normal, ils sont tous comptés 2 fois (aller - retour)!

Sinon il me semble que ton Algo est celui-ci? :)
http://labo.algo.free.fr/pvc/algorithme ... isins.html


ps Cela est jouable pour peu de villes (ce defi); mais pour un million ?
:)
Est beau ce qui plaît sans concept :)
Speedy Galerie
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

J'ai pas regarder, mais c'est sans doute de Dijkstra que vous parler... ?!!
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Une applet qui marche elle :) le Recuit
http://www-sop.inria.fr/mefisto/java/tu ... ode18.html

Un article sympa sur le problème du Voyageur de Commerce
http://villemin.gerard.free.fr/LogForm/ ... m#solution
Ne pas aller sur le lien ' Le Problème du Voyageur de Commerce - applet complet' situé en bas de page Dixit Dobro !
(http://membres.lycos.fr/juhelp/java/ ) <--- celui-ci !! ne pas y aller !

Pour l'algo de Dijkstra, une application Hyper détaillée (enfin l'A*)
pour les créateurs de jeux de Stratégie Temps Réel
Le Pathfinding : algorithme de parcours ! (super fourni l'article!)
http://www.vieartificielle.com/article/?id=179
Dernière modification par Frenchy Pilou le mar. 06/déc./2005 17:53, modifié 7 fois.
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ATTENTION le 2eme lien amene sur un virus ou cheval de troie !!!
(http://membres.lycos.fr/juhelp/java/ ) <--- celui-ci !! ne pas y aller !


"Contains signature of the exploits EXP/JS.PhpBB.A" !!!!

NE Cliquez pas sur le lien indiqué "Le recuit simulé" !!! (a gauche dans la page )

Merci Frenchy !! sur ce coup la t'assure pas ! :(
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Je le vire aussi sec !
Désolé !
Mon anti virus n'avais rien vu :?
En fait je n'avais pas cliqué sur ce lien dans la page!
Cela veut-il dire qu'il faut tester tous les liens apparaissant sur une page ?
Impossible!
Ah les vendeurs d'anti-virus ont encore de beaux jours devant eux !
A se demander si....
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

A se demander si....
ne te le demande plus !! c'est sur !! Image
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Ici plein de parcours pour tester vos Algos !
Avec apparemment le circuit optimum et l'algo, le matos, la vitesse de résolution 8)
de 131 à 744 710 points 8O 8O 8O
http://www.tsp.gatech.edu//vlsi/index.html

Et ici même topo mais plus original!Lles points représentent la carte d'un pays !
Haute densité les points 8O
http://www.tsp.gatech.edu//world/countries.html
Est beau ce qui plaît sans concept :)
Speedy Galerie
Répondre