begin process at 2012 05 27 20:19:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > LANGAGE RECONNU PAR UN AUTOMATE

LANGAGE RECONNU PAR UN AUTOMATE


 Information sur la source

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :langage, automate Niveau :Débutant Date de création :17/05/2006 Vu / téléchargé :12 350 / 1 059

Auteur : JCDjcd

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Un petit programme qui lit un automate dans un fichier, le format est dans la partie <code>.
Pour lancer le programme, "drag-and'droper" un fichier sur le ".exe" (au passage ".ex"=>".exe").

Une fois l'automate lu, le programme affiche l'automate avec les transitions, et affiche le resultat des tests des exemples.
Les tests consistent à tester (sans blague !) sir un mot appartient au langage de l'automate.

Le gros travail du programme est de calculer le langage reconnu par l'automate. Pour cela il suffit de resoudre un systeme
d'equation mit sous forme matriciel, puis de la resoudre en rendant la matrice triangulaire (ca doit rappeller le pivot de Gauss)

Le programme est fragile au point de vu est erreur d'entree, il ne teste pas si les donnees sont erronees, il suppose qu'elle le sont. De plus il suppose que l'automate est deterministe et émondé !!


Source

  • taille_alphabet=3
  • a RGB(255,0,0)
  • b RGB(0,255,0)
  • c RGB(0,0,255)
  • nombre_sommets=3
  • nombre_transitions=3
  • a:0->1
  • b:1->1
  • c:1->2
  • nombre_exemples=5
  • abc
  • abbbc
  • abca
  • ac
  • abbbbbbbbbbbbbbbbbbbba
  • -----------------------------------------------------
  • taille_alphabet=2
  • a RGB(255,0,0)
  • b RGB(0,0,255)
  • nombre_sommets=2
  • nombre_transitions=4
  • a:0->1
  • a:1->0
  • b:0->0
  • b:1->1
  • nombre_exemples=10
  • a
  • aa
  • aaa
  • b
  • bb
  • bbb
  • aba
  • bab
  • abababab
  • ababababa
  • -----------------------------------------------------
  • taille_alphabet=2
  • a RGB(255,0,0)
  • b RGB(0,0,255)
  • nombre_sommets=4
  • nombre_transitions=8
  • a:0->1
  • a:1->0
  • a:2->3
  • a:3->2
  • b:0->2
  • b:2->0
  • b:1->3
  • b:3->1
  • nombre_exemples=10
  • a
  • aa
  • aaa
  • b
  • bb
  • bbb
  • aba
  • bab
  • abababab
  • ababababa
  • -----------------------------------------------------
  • taille_alphabet=2
  • a RGB(255,0,0)
  • b RGB(0,0,255)
  • nombre_sommets=4
  • nombre_transitions=8
  • a:0->1
  • a:1->0
  • a:2->3
  • a:3->2
  • b:0->2
  • b:2->0
  • b:1->3
  • b:3->1
  • nombre_exemples=10
  • a
  • aa
  • aaa
  • b
  • bb
  • bbb
  • aba
  • bab
  • abababab
  • ababababa
  • -----------------------------------------------------
  • taille_alphabet=3
  • a RGB(255,0,0)
  • b RGB(0,255,0)
  • c RGB(0,0,255)
  • nombre_sommets=2
  • nombre_transitions=5
  • a:0->0
  • c:0->0
  • a:1->1
  • c:1->1
  • b:0->1
  • nombre_exemples=5
  • abc
  • abbbc
  • abca
  • ac
  • abcca
  • -----------------------------------------------------
  • taille_alphabet=2
  • 0 RGB(255,128,0)
  • 1 RGB(255,0,255)
  • nombre_sommets=4
  • nombre_transitions=8
  • 0:0->3
  • 1:0->1
  • 0:3->3
  • 1:3->1
  • 0:1->2
  • 1:1->3
  • 0:2->1
  • 1:2->1
  • nombre_exemples=5
  • 0101
  • 11
  • 110000
  • 110011
  • 101010
  • -----------------------------------------------------
  • taille_alphabet=7
  • A RGB(255,0,0)
  • B RGB(0,255,0)
  • E RGB(0,0,255)
  • G RGB(255,0,255)
  • J RGB(255,255,0)
  • Y RGB(0,255,255)
  • _ RGB(0,0,0)
  • nombre_sommets=10
  • nombre_transitions=11
  • J:0->1
  • E:1->2
  • _:2->3
  • J:2->1
  • B:3->4
  • E:4->5
  • G:5->6
  • A:6->7
  • Y:7->8
  • E:8->9
  • B:9->4
  • nombre_exemples=6
  • JE
  • BEGAYE
  • JE_BEGAYE
  • JEJE_BEGAYE
  • JE_BEGAYE_JE_BEGAYE
  • JEJE_BEGAYEBEGAYEBEGAYE
taille_alphabet=3
a RGB(255,0,0)
b RGB(0,255,0)
c RGB(0,0,255)
nombre_sommets=3
nombre_transitions=3
a:0->1
b:1->1
c:1->2
nombre_exemples=5
abc
abbbc
abca
ac
abbbbbbbbbbbbbbbbbbbba
-----------------------------------------------------
taille_alphabet=2
a RGB(255,0,0)
b RGB(0,0,255)
nombre_sommets=2
nombre_transitions=4
a:0->1
a:1->0
b:0->0
b:1->1
nombre_exemples=10
a
aa
aaa
b
bb
bbb
aba
bab
abababab
ababababa
-----------------------------------------------------
taille_alphabet=2
a RGB(255,0,0)
b RGB(0,0,255)
nombre_sommets=4
nombre_transitions=8
a:0->1
a:1->0
a:2->3
a:3->2
b:0->2
b:2->0
b:1->3
b:3->1
nombre_exemples=10
a
aa
aaa
b
bb
bbb
aba
bab
abababab
ababababa
-----------------------------------------------------
taille_alphabet=2
a RGB(255,0,0)
b RGB(0,0,255)
nombre_sommets=4
nombre_transitions=8
a:0->1
a:1->0
a:2->3
a:3->2
b:0->2
b:2->0
b:1->3
b:3->1
nombre_exemples=10
a
aa
aaa
b
bb
bbb
aba
bab
abababab
ababababa
-----------------------------------------------------
taille_alphabet=3
a RGB(255,0,0)
b RGB(0,255,0)
c RGB(0,0,255)
nombre_sommets=2
nombre_transitions=5
a:0->0
c:0->0
a:1->1
c:1->1
b:0->1
nombre_exemples=5
abc
abbbc
abca
ac
abcca
-----------------------------------------------------
taille_alphabet=2
0 RGB(255,128,0)
1 RGB(255,0,255)
nombre_sommets=4
nombre_transitions=8
0:0->3
1:0->1
0:3->3
1:3->1
0:1->2
1:1->3
0:2->1
1:2->1
nombre_exemples=5
0101
11
110000
110011
101010
-----------------------------------------------------
taille_alphabet=7
A RGB(255,0,0)
B RGB(0,255,0)
E RGB(0,0,255)
G RGB(255,0,255)
J RGB(255,255,0)
Y RGB(0,255,255)
_ RGB(0,0,0)
nombre_sommets=10
nombre_transitions=11
J:0->1
E:1->2
_:2->3
J:2->1
B:3->4
E:4->5
G:5->6
A:6->7
Y:7->8
E:8->9
B:9->4
nombre_exemples=6
JE
BEGAYE
JE_BEGAYE
JEJE_BEGAYE
JE_BEGAYE_JE_BEGAYE
JEJE_BEGAYEBEGAYEBEGAYE

 Conclusion

Pour information, pour obtenir le systeme d'equations (une par etat de l'automate).
S'il y a une transition de E vers E' par la lettre <a>, alors le langage reconnu par E notée L est L=a.L'
S'il y a deux transition : E->E' avec <a> et E->E'' avec <b> alors L=a.L' + b.L''
On obtient un system d'equation.
Les coefficients de la matrice sont des expressions "formelles". L'operation '.' n'est pas commutative !!!
De plus si l'on a L=a.L+e alors L=(a*).e ou a* represente toutes les puissances iterees de <a>
Ceci est l'equivalent de l'inverse, c'est ce qui permet d'eliminer les elements diagonaux de la matrice.

Bon si vous avez des questions ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture COLORATION SYNTAXIQUE
Source avec Zip Source avec une capture ORBITES DES SATELLITES GPS
Source avec Zip Source avec une capture DESSIN D'ARBRES
Source avec Zip Source avec une capture PROGRAMMATION LINEAIRE
Source avec Zip EXTENSION DE CORPS (MATH)

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip Source avec une capture TRAITEMENT DE L'EQUATION D'UNE CONIQUE AVEC UN GRAMMAIRE par kinkek
Source avec Zip INTERPRETEUR BRAINFUCK par coucou747
Source avec Zip REGEXP EN C SANS LIBRAIRIES par The_Guardian
Source avec Zip PUISSANCE4 EN LANGAGE C par troigee

Commentaires et avis

Commentaire de SpEeDy_Fire le 17/05/2006 16:16:06

Faut s'accrocher pour la description (du point de vue du français).

Commentaire de MuPuF le 17/05/2006 17:12:11

surtout pour une fois l'automate lut...
Si tu expliquais plutot le but du systeme avant d'expliquer ce qu'il fait.
Allez !!! un effort lol

Commentaire de magic_Nono le 17/05/2006 17:20:23

"Le programme est fragile au point de vu est erreur d'entree, il ne teste pas si les donnees sont erronees, il suppose qu'elle le sont."

peut etre faut-il lire que les données sont présuposées valides.

de plus j'ai un gros doute quant à la vérification de boucle dans ces automates...

Magicalement

Commentaire de magic_Nono le 17/05/2006 17:22:23

la lecture du fichier je je je.txt est instructive :

JE
BEGAYE
JE_BEGAYE
JEJE_BEGAYE
JE_BEGAYE_JE_BEGAYE
JEJE_BEGAYEBEGAYEBEGAYE

dslé jcd, mais ça doit etre la fatigue pour toi aussi.

Commentaire de JCDjcd le 17/05/2006 17:26:57

>> MUPUF : le but est de trouver le langage d'un automate, je ne peux pas etre plus clair sur ce point, a moins d'expliquer ce qu'est un automate ...
Et le programme fait cela (donc but=ce qu'il fait), et comment il le fait : en resolvant formellement une equation matricielle.

>> MAGIC_NONO : effectivement le programme suppose que les donnees dans le fichier sont correctes. Qu'appelles-tu la vérification de boucle ?

Commentaire de magic_Nono le 17/05/2006 18:13:00

je ne tiens pas faire un cours de TdL ici (Théorie du langage)
mais les mauvais automates peuvent comporter des boucles ou des chemins multiples.

donc, je pense que ton algo applique l'automate qu'il lit sans le controler préalablement...

en espérant avoir été clair

Magicalement
Bonne Prog

Commentaire de vecchio56 le 17/05/2006 18:41:25 administrateur CS

magic_Nono> Pourquoi les automates comportant des boucles seraient-ils mauvais?

Par ailleurs, je trouve tous les commentaires un peu déplacés. Il y a certes quelques fautes, mais l'auteur fait comme toujours un effort pour expliquer le fonctionnement du programme, ce qui est plutot rare.

Commentaire de magic_Nono le 18/05/2006 12:23:54

Vecchio
effectivement, je m'excuse si j'ai été trop incisif.
ce que je me rappelle des cours de TdL, c'est que les automates non terminaux (pouvant partir en boucle) sont dangereux, tout au moins pour la génération de langage,
apres, pour l'exploitation, je ne sais plus, mais il me semble qu'on m'a eu mis en garde pour le même soucis, à l'époque...
Je me souviens avoir alors mis en place un systême de validation d'automate qui était relativement complexe.  (de mémoire, c'était fait en prolog) et il me semble également que les traductions de prolog à C/C++ donnent en général un très long code.

sinon, évidemment, oui, on apprécie ses efforts explicatifs.

Cordialement.

Commentaire de Kirua le 18/05/2006 13:19:07

je trouve le programme plutôt impressionnant. hmm, évidemment ça l'aurait été encore plus si tu arrivais à construire la FSM (automate donc) à partir de sa description par expressions régulières (je sais que c'est pas comme ça qu'on dit en français... mais je sais plus comment on le dit en français ^^) ... mais le truc chaud avec les regexp, c'est qu'il est indispensable de simplifier la FSM obtenue, et ça c'est :/.

Commentaire de nadjet24 le 26/04/2008 19:34:30 4/10

Bonjour je trouve votre programme interessant.Je souhaite encore avoir une petite d'aide car j'ai un fichier XML je souhaite le convertit en machine à état finis pour l'implementer en suite par les workFlow voilà mon fichier xml en arboressence merci infiniment.

<?xml version="1.0" encoding="UTF-8" ?>
- <ProcessSpecification name="Procurement Processs" uuid="Undefined">
  <BusinessDocument name="Quotation Request" />
  <BusinessDocument name="Quotation Response" />
  <BusinessDocument name="Extra Info Request" />
  <BusinessDocument name="Extra Info Response" />
  <BusinessDocument name="Order" />
  <BusinessDocument name="Dispatch Advise" />
  <BusinessDocument name="CreditAdvice" />
  <BusinessDocument name="Payment Advice" />
  <BusinessDocument name="Invoice" />
- <BinaryColaboration name="Procurment" timeToPerform="P2D">
  <Documentation>timeToPerform = Period: 2 days from start of transaction</Documentation>
  <InitiatingRole name="Buyer" />
  <RespondingRole name="provider" />
  <Start toBusinessState="Quotation Request" />
  <Transition fromBusinessState="Quotation Request" toBusinessState="Extra Info Request" />
  <Transition fromBusinessState="Making Order" toBusinessState="Create Dispatch Advice" />
  <Transition fromBusinessState="Create Dispatch Advice" toBusinessState="Process Payment" />
  <Failure fromBusinessState="Create Order" conditionGuard="to complete" />
  <Failure fromBusinessState="Create Dispatch Advice" conditionGuard="to complete" />
  <Success fromBusinessState="Process PAyment" conditionGuard="Success" />
  </BinaryColaboration>
- <BusinessTransaction name="Quotation Request">
- <RequestingBusinessActivity name="Quotation Request" isNonRepudiationRequired="true" timeToAcknowledgeReceipt="P2D" timeToAcknowledgeAcceptance="P3D">
  <DocumentEnvelope businessDocument="Invoice" />
  </RequestingBusinessActivity>
- <RespondingBusinessActivity name="Prepare Quotation">
  <DocumentEnvelope isPositiveResponse="true" />
  </RespondingBusinessActivity>
  </BusinessTransaction>
- <BusinessTransaction name="Extra Info Response">
- <RequestingBusinessActivity name="Extra Info Request" isNonRepudiationRequired="true" timeToAcknowledgeReceipt="P2D" timeToAcknowledgeAcceptance="P3D">
  <DocumentEnvelope businessDocument="Extra Info Request" />
  </RequestingBusinessActivity>
- <RespondingBusinessActivity name="Extra Info Response" isNonRepudiationRequired="true" timeToAcknowledgeReceipt="P5D">
  <DocumentEnvelope isPositiveResponse="true" businessDocument="Extra Info Response" />
  </RespondingBusinessActivity>
  </BusinessTransaction>
- <BusinessTransaction name="Create Order">
- <RequestingBusinessActivity name="Purchase Order">
  <DocumentEnvelope businessDocument="Order" />
  </RequestingBusinessActivity>
  <RespondingBusinessActivity name="Confirm Order" />
  </BusinessTransaction>
- <BusinessTransaction name="Create Dispatch Advice">
- <RequestingBusinessActivity name="Do Deliver">
  <DocumentEnvelope businessDocument="Dispatch Advice" />
  </RequestingBusinessActivity>
  <RespondingBusinessActivity name="Confirm Deliver" />
  </BusinessTransaction>
- <BusinessTransaction name="Process Payment">
- <RequestingBusinessActivity name="Do Payment">
  <DocumentEnvelope businessDocument="Payment Advice" />
  </RequestingBusinessActivity>
- <RespondingBusinessActivity name="Confirm Payment">
  <DocumentEnvelope isPositiveResponse="true" />
  </RespondingBusinessActivity>
  </BusinessTransaction>
  </ProcessSpecification>

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

création d'un compilateur en langage c [ par fati fleur ] on veut créer un compilateur sous c et on veut le code source du compilateur requete SQL avec ODBC et MFC [ par julok2 ] Salut à tous,j'utilise un programme où j'ai besoin à un moment d'afficher le contenu de ma base de donnée selon un ordre précis, j'ais donc écrit:int IDL : spécifications du langage [ par gblade ] tt est ds le titre ;) je voudrais avoir les spécifications du langages IDL compilé avec MIDL de MS Pb tableaux langage C (Borland) [ par SniPi ] Comment on fait pr faire un tableau avec 10 valeurs, mais que les 10 valeurs ce soit l'utilisateur qui les rentre...??Amicalement...SniPi PROG EN C, C++ ou autre langage... [ par sremy ] salut, je pose mon pb :Imaginons qu'on ai un prog. MS-DOS appelé prog1.exe qui une fois lancé est en attente d'un password dans la ligne de commande. probleme en langage c! [ par matthieub ] Bonjour a tous,Voila g un projet a faire en langage c pour la fin de la semaine et je bloque completement!Je vous donne le lien ou il y a le sujet:htt une matrice de taille quelconque [ par anaisa ] salut tt le monde saurez vous m'aidez à résoudre un petit probleme: je dois programmé la somme, produit de matrices de taille quelconque en langage C projet en langage c [ par mirs ] ce serait au fait pour une sur un projet :clavier alpha numérique à l'aide de 8 touchespour avoir plus de préccision veuillez mze contacter à ce numér helppp [ par LDDL ] Slt a tousVoilà je ne programme pas en C et j'ai dois faire une Dll qui permette de calculer des nombres DOUBLE (ex : 800000000/6.55957) puis de renv image pgm langage c [ par srenaud ] Bonjour,je cherche a modifier l'apparence d'une image pgm. Il faudrait que je trouve comment faire un effet blur (flou), un effet de pixelisation, un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales