Journal avec des résultats personnels (bidouillage informatique)

Aller en bas

Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Mer 13 Déc 2017 - 18:15

Hello, voilà, je reviens, je créé cette fois un fil pour relater [de temps en temps] des choses à propos de ce que je fais ( et non plus la manière dont je compte faire contrairement à mon dernier fil sur ce thème)


Dernière édition par Stauk le Mer 13 Déc 2017 - 18:39, édité 2 fois
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Mer 13 Déc 2017 - 18:19

Vous vous êtes déjà demandé combien il y a de fonctions booléennes différentes, de la forme
[a operation b] operation [c operation d]
(où a,b,c,d prennent des valeurs parmi {0,1} et operation est un des opérateurs logique {xor,and,or}
?

Oui ? Non ? Bon ben justement ça tombe bien, car j'ai essayé de les lister. Pour chacune des fonctions de cette forme j'ai calculé une forme caractéristique (la table de vérité), et je n'ai gardé qu'un exemplaire pour chaque. Alors je suis pas entièrement sûr du résultat, vu que j'ai pas pratiqué énormément de tests. Bon en fait j'ai pas fait de tests du tout.




without further ado:

Partie gauche : la fonction.
Correspondance à droite, la table de vérité binaire (au format hexadecimal)

la version pastebin (pour plus de lisibilité) https://pastebin.com/JrJ7nqTR

Code:

[a  and  d] and  [c  and  b] 0001
[c  and  d] and  [a  xor  b] 0006
[b  or   a] and  [c  and  d] 0007
[b  and  d] and  [a  xor  c] 0012
[c  or   a] and  [d  and  b] 0013
[a  and  d] and  [c  xor  b] 0014
[c  or   b] and  [a  and  d] 0015
[c  and  b] and  [a  xor  d] 0102
[a  or   d] and  [c  and  b] 0103
[c  and  a] and  [d  xor  b] 0104
[b  or   d] and  [a  and  c] 0105
[b  and  a] and  [c  xor  d] 0110
[c  or   d] and  [a  and  b] 0111
[a  and  d] xor  [c  and  b] 0356
[a  and  d] or   [c  and  b] 0357
[c  and  a] xor  [d  and  b] 0536
[c  and  a] or   [d  and  b] 0537
[b  xor  a] and  [c  xor  d] 0660
[c  or   d] and  [a  xor  b] 0666
[b  or   a] and  [c  xor  d] 0770
[b  or   a] and  [c  or   d] 0777
[b  and  a] xor  [c  and  d] 111E
[b  and  a] or   [c  and  d] 111F
[c  xor  a] and  [d  xor  b] 1248
[b  or   d] and  [a  xor  c] 125A
[c  or   a] and  [d  xor  b] 134C
[c  or   a] and  [d  or   b] 135F
[a  xor  d] and  [c  xor  b] 1428
[a  or   d] and  [c  xor  b] 143C
[c  or   b] and  [a  xor  d] 152A
[a  or   d] and  [c  or   b] 153F
[b  and  a] xor  [c  xor  d] 1EE1
[c  or   d] xor  [a  and  b] 1EEE
[b  and  a] or   [c  xor  d] 1FF1
[c  or   d] or   [a  and  b] 1FFF
[c  and  a] xor  [d  xor  b] 36C9
[b  or   d] xor  [a  and  c] 36FA
[c  and  a] or   [d  xor  b] 37CD
[b  or   d] or   [a  and  c] 37FF
[a  and  d] xor  [c  xor  b] 3C69
[a  and  d] or   [c  xor  b] 3C7D
[c  or   b] xor  [a  and  d] 3F6A
[c  or   b] or   [a  and  d] 3F7F
[c  and  b] xor  [a  xor  d] 56A9
[a  or   d] xor  [c  and  b] 56FC
[c  and  b] or   [a  xor  d] 57AB
[a  or   d] or   [c  and  b] 57FF
[b  and  d] xor  [a  xor  c] 5A69
[b  and  d] or   [a  xor  c] 5A7B
[c  or   a] xor  [d  and  b] 5F6C
[c  or   a] or   [d  and  b] 5F7F
[c  and  d] xor  [a  xor  b] 6669
[c  and  d] or   [a  xor  b] 666F
[a  xor  d] xor  [c  xor  b] 6996
[c  or   d] xor  [a  xor  b] 6999
[b  or   d] xor  [a  xor  c] 69A5
[a  or   d] xor  [c  xor  b] 69C3
[c  or   b] xor  [a  xor  d] 6A95
[a  or   d] xor  [c  or   b] 6AC0
[c  or   a] xor  [d  xor  b] 6C93
[c  or   a] xor  [d  or   b] 6CA0
[b  xor  a] or   [c  xor  d] 6FF6
[c  or   d] or   [a  xor  b] 6FFF
[b  or   a] xor  [c  and  d] 7778
[b  or   a] or   [c  and  d] 777F
[b  or   a] xor  [c  xor  d] 7887
[b  or   a] xor  [c  or   d] 7888
[c  xor  a] or   [d  xor  b] 7BDE
[b  or   d] or   [a  xor  c] 7BFF
[a  xor  d] or   [c  xor  b] 7DBE
[a  or   d] or   [c  xor  b] 7DFF
[c  or   b] or   [a  xor  d] 7FBF
[c  or   a] or   [d  xor  b] 7FDF
[b  or   a] or   [c  xor  d] 7FF7
[a  or   d] or   [c  or   b] 7FFF

avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Dim 17 Déc 2017 - 22:40

Donc dans la continuation des fonctions présentées précédemment, voici la dynamique de quelques automates cellulaires 1D à 4 variables partant d'un vecteur mono-pixel.

Spoiler:

https://pastebin.com/MJzZED61
https://pastebin.com/wYeu6265
https://pastebin.com/CA6RnveD
Code:

00ee [c  or   b] xor  [a  and  d] 3F6A
________________________________X_______________________________
_____________________________XX_________________________________
_______________________________XXX______________________________
____________________________XXXX________________________________
______________________________XX_XX_____________________________
___________________________XX__XX_______________________________
_____________________________XXXXXXX____________________________
__________________________XX____XX______________________________
____________________________XXX___XXX___________________________
_________________________XXXX__XXXX_____________________________
___________________________XX_XXXXX_XX__________________________
________________________XX__X__X__XX____________________________
__________________________XXXXXXXXXXXXX_________________________
_______________________XX__________XX___________________________
_________________________XXX_________XXX________________________
______________________XXXX________XXXX__________________________
________________________XX_XX_______XX_XX_______________________
_____________________XX__XX______XX__XX_________________________
_______________________XXXXXXX_____XXXXXXX______________________
____________________XX____XX____XX____XX________________________
______________________XXX___XXX___XXX___XXX_____________________
___________________XXXX__XXXX__XXXX__XXXX_______________________
_____________________XX_XXXXX_XXXXX_XXXXX_XX____________________
__________________XX__X__X__X__X__X__X__XX______________________
____________________XXXXXXXXXXXXXXXXXXXXXXXXX___________________
_________________XX______________________XX_____________________
___________________XXX_____________________XXX__________________
________________XXXX____________________XXXX____________________
__________________XX_XX___________________XX_XX_________________
_______________XX__XX__________________XX__XX___________________
_________________XXXXXXX_________________XXXXXXX________________
______________XX____XX________________XX____XX__________________
________________XXX___XXX_______________XXX___XXX_______________
_____________XXXX__XXXX______________XXXX__XXXX_________________
_______________XX_XXXXX_XX_____________XX_XXXXX_XX______________
____________XX__X__X__XX____________XX__X__X__XX________________
______________XXXXXXXXXXXXX___________XXXXXXXXXXXXX_____________
___________XX__________XX__________XX__________XX_______________
_____________XXX_________XXX_________XXX_________XXX____________
__________XXXX________XXXX________XXXX________XXXX______________
____________XX_XX_______XX_XX_______XX_XX_______XX_XX___________
_________XX__XX______XX__XX______XX__XX______XX__XX_____________
___________XXXXXXX_____XXXXXXX_____XXXXXXX_____XXXXXXX__________
________XX____XX____XX____XX____XX____XX____XX____XX____________
__________XXX___XXX___XXX___XXX___XXX___XXX___XXX___XXX_________
_______XXXX__XXXX__XXXX__XXXX__XXXX__XXXX__XXXX__XXXX___________
_________XX_XXXXX_XXXXX_XXXXX_XXXXX_XXXXX_XXXXX_XXXXX_XX________
______XX__X__X__X__X__X__X__X__X__X__X__X__X__X__X__XX__________
________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_______
_____XX______________________________________________XX_________
_______XXX_____________________________________________XXX______
____XXXX____________________________________________XXXX________
______XX_XX___________________________________________XX_XX_____
___XX__XX__________________________________________XX__XX_______
_____XXXXXXX_________________________________________XXXXXXX____
__XX____XX________________________________________XX____XX______
____XXX___XXX_______________________________________XXX___XXX___
_XXXX__XXXX______________________________________XXXX__XXXX_____
___XX_XXXXX_XX_____________________________________XX_XXXXX_XX__
XX__X__X__XX____________________________________XX__X__X__XX____
__XXXXXXXXXXXXX___________________________________XXXXXXXXXXXXX_
X__________XX__________________________________XX__________XX__X
XXXX_________XXX_________________________________XXX_________XXX
XX________XXXX________________________________XXXX________XX____
__XXX_______XX_XX_______________________________XX_XX_______XXX_

https://pastebin.com/KTehKdaq
https://pastebin.com/LHC0ysEs
https://pastebin.com/QDJLm6sg
Code:

0000 [a  xor  d] xor  [c  xor  b] 6996
________________________________X_______________________________
____________________________XXXX________________________________
_____________________________X_X_X_X____________________________
_________________________XX______XX_____________________________
__________________________X___X___X___X_________________________
______________________XXXXXXXXXXXXXXXX__________________________
_______________________X_X_____________X_X______________________
___________________XX__XX__________XX__XX_______________________
____________________X_______X_______X_______X___________________
________________XXXX____XXXX____XXXX____XXXX____________________
_________________X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X________________
_____________XX______________________________XX_________________
______________X___X___________________________X___X_____________
__________XXXXXXXX________________________XXXXXXXX______________
___________X_X_____X_X_____________________X_X_____X_X__________
_______XX__XX__XX__XX__________________XX__XX__XX__XX___________
________X_______________X_______________X_______________X_______
____XXXX____________XXXX____________XXXX____________XXXX________
_____X_X_X_X_________X_X_X_X_________X_X_X_X_________X_X_X_X____
_XX______XX______XX______XX______XX______XX______XX______XX_____
__X___X___X___X___X___X___X___X___X___X___X___X___X___X___X___X_
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________

avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Dim 17 Déc 2017 - 23:01

Je ne comprends rien, parfait. (=

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Dim 17 Déc 2017 - 23:53

Hyaden a écrit:Je ne comprends rien, parfait. (=
Si quelque chose t'intrigue, tu peux poser des questions. J'ai une réputation de ne pas être super pédagogue, mais peut être qu'avec une série de questions/réponses on peut réussir à extraire du sens de ce que je raconte.
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Lun 18 Déc 2017 - 0:39

D'accord, merci. (:

1) De quoi parles-tu et pourquoi en parles-tu ?
2) Pourquoi proposer des résultats non testés ("Bon en fait j'ai pas fait de tests du tout.") et, par conséquent, à la crédibilité potentiellement douteuse ?
3) J'ai parcouru Wikimachin sans saisir clairement ce qu'est une fonction booléenne : de quoi s'agit-il ?
4) Qu'est-ce qu'un "automate cellulaire 1D à 4 variables" ?
5) Ils sont jolis tes espèces de sapins formés de multiples X, mais à quoi servent-ils ?

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Lun 18 Déc 2017 - 1:42

Hello, c'est sans doute pas la meilleure heure pour te répondre, car j'allais me coucher ^ ^. Au pire je reviendrais préciser des choses demain.

Hyaden a écrit:D'accord, merci. (:
1) De quoi parles-tu et pourquoi en parles-tu ?
2) Pourquoi proposer des résultats non testés ("Bon en fait j'ai pas fait de tests du tout.") et, par conséquent, à la crédibilité potentiellement douteuse ?
J'ai besoin de m'astreindre à une certaine discipline, apprendre à avancer lentement mais surement dans mes projets. Je n'explique vers quoi j'essaye de tendre, et je ne partagerais sans doute pas tout, mais je suis content de mettre sous le projecteur d'un accès public certains aspects. Si je veux psychologiser, je pense que je me sens assez peu intégré socialement, et que j'ai envie de parler de ma vie personnelle, en particulier cet aspect de ma vie personnel, qui est difficile à partager en général. En le posant ici, sans que personne ne soit contraint de s'y intéresser, je le partage un peu, mais sans que ça soit envahissant pour quiconque.  Ils sont non testés car je n'ai pas encore pris le temps de les tester. Mais il y a déjà des choses qui s'affichent, alors je peux les mettre, et permettre de regarder ce que je fais, comme on regarderais par dessus l'épaule d'un condisciple.

Hyaden a écrit:
3) J'ai parcouru Wikimachin sans saisir clairement ce qu'est une fonction booléenne : de quoi s'agit-il ?
Alors on peut peut être commencer par vérifier qu'on est synchrone sur la notion de fonction entière. Une fonction entière est une fonction qui à partir d'entier, construit un nouvel entier. Deux fonctions que tu connais surement très bien :
La fonction somme (notée +)
La fonction produit (notée *)

On tend à donner des noms aux fonctions, par exemple on pourrait appeler la fonction + "somme_de". On note souvent les arguments avec des parenthèse, et le résultat avec une fléche.
somme_de(A,B)--> (A+B)
produit_de(A,B)-->(A*B)

Comme autre exemple de fonction connue, on a la fonction racine carrée, qui prend comme argument un nombre réel positif, et renvoie un nombre réel qui a la propriété quand on le multiplie avec lui même que ce produit est égal à l'argument.  Un autre exemple encore, ce sont les organes du corps qui ont des fonctions. Par exemple les reins prennent en entrée du sang et de l'eau, et fournissent du sang nettoyé, et de l'eau salle.

Maintenant qu'on a cette idée de ce qu'est une fonction, il faut essayer de comprendre ce qu'est un booléen. Un booléen est un ensemble minimaliste, car il n'a que deux éléments. On utilise les booléens pour représenter de l'information. Par exemple si tu utilises des interrupteurs classiques chez toi, ils ont deux position, fermé, et ouvert. Il y a donc deux états pour un interrupteur. De même un booléen a deux états {vrai,faux} qu'on note aussi très souvent {0,1} mais qu'on pourrait noter de n'importe quelle autre façon, pour autant qu'on ai bien deux états distincts {ouvert, fermé} ou même {supérieur à 12, inférieur à 12}. Ce qui est intéressant c'est ce qu'il se passe quand tu as plusieurs booléen, par exemple si dans une pièce tu as deux interrupteurs. Chaque interrupteur peut prendre les valeurs Ouvert/fermé (qu'on va noter O et F). Comme il y a deux interupteur, tu as donc quatre combinaison possible,
OO (les deux sont ouvert)
OF (le deuxième est fermé, et le premier ouvert)
FO
FF (les deux sont fermés)

S'il y a maintenant dans cette pièce une lumière qui peut être allumée ou éteinte, tu peux construire une fonction booléen à deux entrées, la première étant l'état du premier interrupteur, et la deuxième variable est l'état du second interrupteur. La sortie sera l'état de la lampe, Allumée ou Eteinte. Pour uniformiser un peu, on va noter 1 pour Ouvert (au lieu de O) et 0 pour fermé (au lieu de F), et on va de même noter 1 pour allumé, et 0 pour éteint en ce qui concerne la lampe.

On a alors une fonction booléen à deux entrée, qui peut avoir différente forme en fonction de comment les deux interrupteurs sont branchés. Il existe 16 façon dont une telle fonction peut se présenter (chacune des façon correspondant à une façon différente de brancher les interrupteurs sur la lampe). Par exemple si le premier interupteur dirige l'état de la lampe, et que le second n'est branché à rien, on obtiendra la fonction booléenne suivante :

11 --> 1
10 --> 1
01 --> 0
00 --> 1

Les fonctions booléennes permettent également de construire des ordinateurs, qui sont des assemblages d’interrupteurs qu'on peut faire basculer dans un état ou un autre en leur appliquant une tension électrique.

https://fr.wikipedia.org/wiki/Fonction_bool%C3%A9enne



4) Qu'est-ce qu'un "automate cellulaire 1D à 4 variables" ?
La première étape serait de comprendre ce qu'est une automate cellulaire, en particulier un automate cellulaire à 3 variables.
http://mathworld.wolfram.com/ElementaryCellularAutomaton.html


5) Ils sont jolis tes espèces de sapins formés de multiples X, mais à quoi servent-ils ?
Ce sont des représentations des suites définies par les automates cellulaires à 4 variables dont la fonction caractéristique est explicitée en en tête de chaque arbre (du moins c'était le but, je crois que j'ai aperçu un des arbres sans son en-tête ^^ ... honnêtement je ne me suis pas imaginé que quelqu'un viendrait vraiment s'intéresser au sujet jusqu’à ce niveau de détails). Si tu comprends l'article sur les automates cellulaires dit élémentaires que j'ai mis juste en dessus, tout devrait devenir plus clair.
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Lun 18 Déc 2017 - 2:18

Stauk a écrit:Hello, c'est sans doute pas la meilleure heure pour te répondre, car j'allais me coucher ^ ^. Au pire je reviendrais préciser des choses demain.
Je te remercie pour cet effort approfondi de vulgarisation, nocturne qui plus est. Mes yeux picotant, je relirai l'ensemble de tes explications après quelques heures de sommeil et y réagirai alors. (:

Bonne nuit, ô e-pédagogue.

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par soto² le Lun 18 Déc 2017 - 4:00

Je me suis pas mal amusé avec les "automates cellulaires" monodimensionnels (circulaires, Wolfram est la bonne source), c'est une bon intermédiaire conceptuel entre ce qui a amené à l'ordinateur de Von Neumann, qui a utilisé l'axiomatisation des automates autoréplicateurs de Turing, et une compréhension en terme computationnels de la nature distribuée et complexe du cognitif biologique...

Si cela peu t'intéresser, j'ai trouvé çà dans mon "brain" : http://webbrain.com/u/1Apb

Bonne exploration ! Cool
avatar
soto²

Messages : 2760
Date d'inscription : 07/12/2016
Localisation : Au delಠ(31)

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Badak le Lun 18 Déc 2017 - 4:34

illustrations de mon incompréhension précédente de la Question. Et autres hors sujets.:

Stauk a écrit:Vous vous êtes déjà demandé combien il y a de fonctions booléennes différentes, de la forme
[a operation b] operation [c operation d]
(où a,b,c,d prennent des valeurs parmi {0,1} et operation est un des opérateurs logique {xor,and,or}
?

Oui ? Non ? Bon ben justement ça tombe bien, car j'ai essayé de les lister. Pour chacune des fonctions de cette forme j'ai calculé une forme caractéristique (la table de vérité), et je n'ai gardé qu'un exemplaire pour chaque. Alors je suis pas entièrement sûr du résultat, vu que j'ai pas pratiqué énormément de tests. Bon en fait j'ai pas fait de tests du tout.


Salut, je me demande juste ce que c'est que ton but, mais pas au niveau où l'autre "questionneur" t'a questionné.

En fait, à quoi bon vouloir les lister si on sait déjà par simple combinatoire comment les dénombrer.

Tu dis qu'on veux compter les combinaisons de:
[a operation b] operation [c operation d] , où a,b,c,d prennent des valeurs parmi {0,1} et operation est un des opérateurs logique {xor,and,or}

Supposons qu'on considère (a * b ) comme distinct de (b * a) malgré que ce sont équivalent.

Alors on a 4 variables prenant des valeurs parmi 2 valeurs,  avec remise, et en tenant compte de l'ordre. Donc (2 ^4) combinaisons pour les variables.
Ensuite on considère un opérateur à la fois parmi 3 possibilités.  Donc on obtient (2^4)*3 = 48 combinaisons.  

Si vraiment ça te démange à ce point, et que tu en veux la liste explicite, tu n'as qu'à écrire 2 boucles sur un petit programme....

Mais vraiment.... pour quoi faire  ?    (si ce n'est pas trop rude de poser la question ? )

Tu peux sûrement trouver des projets plus interessants ?   Bon ceci dit chacun nos goûts... désolé  Embarassed
Et puis je pensais que tu étais informaticien, et donc je risque de ne rien d'apprendre ici.....

Stauk:
Si je veux psychologiser, je pense que je me sens assez peu intégré socialement, et que j'ai envie de parler de ma vie personnelle, en particulier cet aspect de ma vie personnel, qui est difficile à partager en général. En le posant ici, sans que personne ne soit contraint de s'y intéresser, je le partage un peu, mais sans que ça soit envahissant pour quiconque.
 

Je comprends parfaitement cela... C'est l'idée d'un journal personnel, un peu à la manière d'un Blog.   Des fois on peut avoir envie de calculer des choses inutiles juste pour le plaisir.    Je ne suis pas trop sociable moi même...  

un truc qui me semble ...:
Un truc ( qui me semble ) plus interessant (et utile ) est de considérer 2 niveaux différents d'opérateurs booléens, au lieu d'un seul comme dans ton énoncé:
On a notamment les expressions de la forme :  (a OR b) AND (c OR d)  .
Un problème interessant est de chercher comment ont satisfait cette expression booléenne.

Je sais (et tu sais probablement aussi ) que ce problème de satisfaction de conjonctions est dit NP-complet. C'est à dire que 1) on peut vérifier une solution en temps polynomial; et 2) que ce problème est aussi difficile que n'importe quel problème NP.  
Ça c'est pour la théorie... Je vois bien comment on fait pour vérifier la satisfaction en temps polynomial, mais j'ai pas réfléchi à comment écrire un algo pour résoudre un problème de satisfaction arbitraire.    
Sans parler de comment on fait systématiquement pour réduire n'importe quel problème NP-complet à ce problème de satisfaction, je sais en théorie que ça se fait, mais resterait à voir intuitivement comment ça se fait.   En particulier les problèmes d'optimisation, ce serait cool de voir pourquoi ils sont supposés se réduire à ce problème....

En tous cas, on voit que le problème est qu'il y a une explosion de combinaisons si on grossit l'expression.  Bref on va pas essayer de les lister dans ces cas-là ...


Dernière édition par Badak le Lun 18 Déc 2017 - 19:31, édité 2 fois
avatar
Badak

Messages : 1138
Date d'inscription : 02/12/2011
Localisation : Montréal

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Lun 18 Déc 2017 - 10:51

@Stauk
Le neurone à l'endroit, je rebondis donc sur les choses demeurant nébuleuses. (:

Point 3, la définition d'une fonction booléenne. --> Finalement, c'est comme conceptualiser une sorte de grand arbre des probabilités (arbre pondéré) non ?

Point 4, l'automate cellulaire à 4 variables. --> Grâce à ton lien, je pense avoir pigé ce qu'est un automate cellulaire à 3 variables, uhuh. Là encore, c'est comme une sorte d'arbre des probabilités (arbre pondéré) où les multiples résultats générés sont ensuite représentés via des formes graphiques ? J'ai juste ?

Par contre, dans tous les cas, je ne saisis pas à quoi correspond "1D" dans l'expression "automate cellulaire 1D à 4 variables". A quoi renvoie ce "1D" (le 1, le D et le 1D) ? Et peut-il y avoir d'autres combinaisons significatives de chiffre(s)/lettre(s) (5D, 3F, 7G, 9K11, 23L77, 109MP57V, etc.) ?


@soto²
Je me permets de réagir à votre message. Sans surprise, je n'ai pas compris l'ensemble du vocabulaire que vous utilisez, mais ai cliqué sur le lien. Hm, à quoi cela sert-il "concrètement" ? Ne serait-ce pas aussi simple, voire plus simple même, de mettre l'intégralité de ces termes-phrases (et d'autres) dans un sac et de les piocher au hasard l'un après l'autre (le lien entre les termes-phrases existerait toujours puisqu'une même source initiale -le sac- et également parce que l'on peut toujours trouver un lien à tout) ? (:

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Lun 18 Déc 2017 - 12:43

@badak:

Concernant le SAT solver, je te propose de lire un blog spécialisé, par exemple à un moment j'avais apprécié de me balader sur celui ci (tu peux explorer en cliquant sur les titre de tailles aléatoires à droite) :
https://www.msoos.org/tag/parallel-sat-solving/

Je ne vais pas répondre à tes autres suggestions, car certains point me semblent redondants avec le matériel déjà proposé (ou alors j'ai pas compris). Dans tous les cas je te propose de voir où mènent les solutions actuelles avant d'essayer de les améliorer.

Par exemple mon impression est que tu n'as pas réalisé que les 75 fonctions retenues sont un sous ensemble de toutes les fonctions qui ont la forme proposée dont la propriété est qu'aucune des fonctions n'est identique à une autre. Ce sont 75 fonctions uniques. Pour ce qui est de la forme que j'ai choisis, je te propose d'abord de lister les propriétés intéressante qu'elle peut avoir, avant de proposer des formes alternatives.

https://pastebin.com/JrJ7nqTR

@Hyaden :
Alors heu, point 3, je ne sais pas si je comprends bien ton idée. Tu peux de fait concevoir une fonction booléenne particulière comme un arbre. Par ailleurs les fonctions de bases peuvent être assimilées à des probabilités 100% 0%, mais je ne sais pas si c'est ce que tu veux dire. En général une fonction booléenne est surtout un tableau, qu'on appelle "table de vérité".

https://fr.wikipedia.org/wiki/Table_de_v%C3%A9rit%C3%A9

En particulier les fonctions XOR, AND et OR sont toutes les trois des fonctions booléennes à deux variables, qui ont un nom et dont les tables de vérités sont apprises par coeur par tous les ingénieurs et mathématiciens. Le AND et le XOR sont assez proches de nos conjonctions de coordinations "ou" et "et".

"Tu as bien acheté du pain et des croissants" ?
Si le bonhomme revient avec seulement du pain [10], il a perdu. S'il revient avec seulement des croissants [01], il a perdu. S'il revient avec rien du tout[00], il a perdu aussi. Mais s'il a à la fois du pain  et des croissants [11], bingo. Ce qui nous donne une  table de vérité
[00] --> perdu
[10] --> perdu
[01] --> perdu
[11] --> bingo

"Tu préfère manger du pain ou des croissants" ?
Ici en général ça va exclure pour l'interlocuteur deux options
[00] : ne manger ni pain ni croissant
[11] : manger à la fois du pain et aussi des croissants.
Les deux autres options sont autorisées
[10] : du pain, mais pas de croissant
[01] : des croissants, mais pas de pain.

Point 4 : l'automate élémentaire est exprimé par sa règle (table de vérité), elle est locale, mais s'applique à une infinité de points. Je pense que le mieux c'est de considérer des exemples concrets .. en particulier les exemples en 2D sont plus parlant !!

Ce qui amène au problème de la 1D : ça signifie en une dimension. La table de vérité (ou plus généralement la fonction) d'un automate cellulaire s'applique localement. Cette localité peut être sur un segment (1D), sur une surface (2D) dans un volume (3D) etc ... L'automate cellulaire le plus connu est le jeu de la vie, et il est en deux dimensions.

Spoiler:


https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life

Les automates cellulaires sont parfois utilisés dans des simulations, que ce soit dans des jeux ou des articles universitaires.
Spoiler:





Dans le cas des fonctions booléennes la fonction appliquée est dite déterministe, mais rien n'empêche de créer des automates cellulaires avec des règles probabilistes. D'ailleurs il existe en pratique une sorte de zone grise entre les deux ... lorsque la fonction déterministe devient suffisamment complexe. En particulier sur la dernière vidéo, l'aspect aléatoire des développements obtenus vient d'une telle zone grise.




Article aléatoire :
https://en.wikipedia.org/wiki/Curse_of_dimensionality
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par soto² le Lun 18 Déc 2017 - 13:05

@ Hyaden : Le "brain" est un outil de représentation des connaissances permettant de gérer la complexité culturelle : Un outil de représentation des connaissances pour penseurs arborescents.

Je comprends que cela ne fasse pas sens pour toi, probablement parce que tu n'as pas la culture adéquate. Ce que j'indiquai visait à désigner à Stauk un domaine pertinent lié aux automates à états finis, dit "cellulaires", en direction des Sciences cognitives : Comment se repérer dans le domaine complexe des Sciences Cognitives
avatar
soto²

Messages : 2760
Date d'inscription : 07/12/2016
Localisation : Au delಠ(31)

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Lun 18 Déc 2017 - 14:16

@Stauk
Je pense comprendre en grande partie = il reste de petites zones obscures, mais j'ignore si cela est lié à un souci de forme et/ou de fond et/ou de logique de raisonnement. Quoi qu'il en soit, comme le souligne élégamment soto², je ne possède probablement point "la culture adéquate". Je te remercie cependant pour le temps investi, c'est très courtois, et ne manquerai pas de continuer à creuser le sujet seule.


@soto²
Danke schön².

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Lun 18 Déc 2017 - 14:32

Hyaden a écrit:je ne possède probablement point "la culture adéquate".
Je pense que tous le monde a la culture adéquate, mais comme tu le mentionnes (la forme), c'est pas nécessairement évident de trouver le bon angle pour présenter les choses. Tous le monde ne prend pas plaisir à vivre ces sujets non plus d'ailleurs, et il est envisageable qu'il n'y ait que peu de bonheur à y trouver pour la majorité (c'est à dire que c'est un peu chiant comme la pluie en général, voir sans intérêt). Je n'ai moi même qu'une culture limitée, car j'aime les choses simples, très terre à terre. Il y a peu de culture nécessaire pour comprendre, mais par contre ça prend quand même beaucoup de temps. Peu de règles initiales, mais beaucoup de façon de les combiner ensuite, et de nombreux points de vue qui peuvent éclairer et mettre en lien les phénomènes explorés avec le monde de tous les jours.

Hyaden a écrit:
Je te remercie cependant pour le temps investi, c'est très courtois, et ne manquerai pas de continuer à creuser le sujet seule.
Merci à toi, ça m'a touché que quelqu'un s'intéresse à ce fil ^ ^, même l'espace d' un instant.
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Invité le Lun 18 Déc 2017 - 14:54

Stauk a écrit:
Hyaden a écrit:je ne possède probablement point "la culture adéquate".

Je pense que tous le monde a la culture adéquate
Afin d'annihiler tout quiproquo éventuel, je précise penser identiquement au fond. Je relevais simplement ici l'hypothèse avancée par un autre intervenant (cf. il manque le bout "comme le souligne élégamment soto²" dans ta citation de mes propos).


Stauk a écrit:
Merci à toi, ça m'a touché que quelqu'un s'intéresse à ce fil ^ ^, même l'espace d' un instant.
Bonne continuation. (:

Invité
Invité


Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Bimbang le Lun 18 Déc 2017 - 15:49

Quand tu expliques, moi aussi je comprends. Ça me fait presque bizarre, même.
Le reste est HS alors je mets sous spoiler.

HS:
Deux idées me sont venues du coup.
- Je me suis revue tout à coup, il y a quelques années, rentrant du boulot complétement crevée intellectuellement et me jetant pourtant sur des sudokus issus de mon programme de télé préféré. Ça me faisait du bien étrangement. Je ne pouvais pas dire pourquoi, juste que j'avais besoin de "fonctionner" différemment.

- C'est chouette de pouvoir comprendre vers quoi s'orientent les "appétits" des autres. J'aime beaucoup comprendre les différences en fait, c'est une façon de me comprendre aussi. J'avais adoré discuter avec Asperzebre de sa façon de comprendre le monde. On a tous tellement l'impression qu'on est construit pareil, plus ou moins. Or, toutes nos discussions partent d'une présupposée d'identicité (mot inventé hop, parait qu'il faut dire "similitude" mais bof). Combien de biais à passer avant de se comprendre...et comment juger qui que ce soit, vu combien nos atouts/perspectives sont variés/es. D'où l'intérêt d'oser "parler authentique".
Et oui, je sais que tout ce que je viens de dire est évident. Tellement évident, qu'on l'oublie quand même tous les jours.
avatar
Bimbang

Messages : 3882
Date d'inscription : 31/07/2016
Localisation : 44

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Badak le Lun 18 Déc 2017 - 16:37

merci !  il me semblait aussi que tu ne devais pas faire un truc naif ! c'est cool.

Et je vois bien sur le pastebin (que je n'avais pas vu cette nuit) qu'en fait tu permets à l'opérateur logique de varier entre les a,b,c,d:  donc en effet les combinaisons sont plus interessantes, et du coup tout ce que je disais est en effet caduque (et bien plus naif en effet que ce que tu faisais)....   Embarassed   Bref j'avais  mal lu....désolé.  

Je vois bien que à l'oeil toutes tes fct sont distinctes.  Mais on pourrait aussi s'amuser à déterminer le nombres de combinaisons sans en faire la liste explicite.   Il faudra que j'essaie pour voir si on arrive au même nombre de 75.  


Mais je reste à me demander encore si tu as un projet caché derrière dont ce ne serait que la première étape.

Spoiler:
Ce que je pensais n'étais pas de prétendre penser qu'on allait améliorer les Sat-solver, juste se demander "de manière naive" comment en construire un (avant de vérifier comment on en fait un plus sérieusement), et je m'étais demander si ce que tu faisais n'était pas en fait peut-être un exercice en prélude à ça.    Mais je voix bien que non.  

Merci pour le lien.


Stauk a écrit:
Concernant le SAT solver, je te propose de lire un blog spécialisé, par exemple à un moment j'avais apprécié de me balader sur celui ci (tu peux explorer en cliquant sur les titre de tailles aléatoires à droite) :
https://www.msoos.org/tag/parallel-sat-solving/

Par exemple mon impression est que tu n'as pas réalisé que les 75 fonctions retenues sont un sous ensemble de toutes les fonctions qui ont la forme proposée dont la propriété est qu'aucune des fonctions n'est identique à une autre. Ce sont 75 fonctions uniques. Pour ce qui est de la forme que j'ai choisis, je te propose d'abord de lister les propriétés intéressante qu'elle peut avoir, avant de proposer des formes alternatives.

 
avatar
Badak

Messages : 1138
Date d'inscription : 02/12/2011
Localisation : Montréal

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Mar 19 Déc 2017 - 9:49

Un petit article qui capture assez bien la démarche que je m'impose en ce moment (le tout début, ou il parle de l'importance de l'incrémentalité)

http://preshing.com/20171218/how-to-write-your-own-cpp-game-engine/

Deciding where things should go is the hard part, and that’s easier to do when the code already exists.
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Re: Journal avec des résultats personnels (bidouillage informatique)

Message par Stauk le Ven 22 Déc 2017 - 17:09

Alors maintenant une petite mise à jour qui répond (très partiellement et provisoirement) à la question qui a été posée plus haut : mais à quoi ça sert ? Bien sûr je ne vais pas vous dire à quoi sert le résultat que je vous fourni maintenant, mais ça vous donnera une idée de ce à quoi devait servir le résultat que j'ai donné plus tôt.
Spoiler:

Les générateurs aléatoires disponibles pour les algorithmes, ont tendance à fournir des suites très limitées. En particulier nombre d'entre eux sont orientés vers la génération de nombre aléatoires sur 32 bits. Et d'ailleurs d'une certaine façon, on ne devrait pas parler de nombres aléatoire, mais d'éléments aléatoire parmi un ensemble. Ou le nombre d'éléments de l'ensemble est généralement décrit par le nombre de bit nécessaire pour numéroter les éléments.Les fonctions que j'ai fourni plus haut, ont pour objectif de permettre de créer un générateur aléatoire. Ce qui pose la question de définir ce qu'est un générateur aléatoire, il y a d'une part le "vrai hasard" qui magiquement répond à tous les critères de définition du hasard. Et puis il y a les faux hasard, les hasard déterministe, qui ne réponde jamais à tous les critères, mais qui peuvent avoir quelques propriétés communes avec le vrai hasard.

La propriété sur laquelle je me suis concentré est la suivante :  est ce que les groupes de 8 bits considérés individuellement présente la propriété d'indépendance des bits de chaque groupes ? J'ai testé ce critère sur les fonctions que j'ai fourni plus haut, (et aussi sur la fonction rand() fourni par le c standard), et j'ai utilisé ça pour classer nos automates dont on a déjà parlé. Arbitrairement chaque automate part de la valeur 1 (un seul bit à 1), et itère sur un registre 64 bits pour créer une succession de chaines 64 bits pseudo-aléatoire. Le score correspond à la ressemblance avec le vrai hasard (le vrai hasard est à 0), et je compare les différents générateur sur le même nombre de chaines générés (tous les automates s'éloignent de 0 au fur et a mesure que le nombre de chaines générée augmente, là ou un générateur vraiment aléatoire devrait faire le contraire). Plus le score est proche de 0 (petit), plus le générateur ressemble à du vrai hasard.

https://pastebin.com/MJ3vc384

Curieux que vous êtes, vous me demanderez sans doute : mais pourquoi y en a qui ont tous le même score ? (surtout les mauvais élèves vers la fin de la liste). Et bien c'est tout simplement parce-que ces générateur fournissent toujours la même chaine (en particulier les chaines toutes à 1, et la chaîne toute à 0).  Pour référence, j'ai aussi calculé le score de la fonction rand() standard du C (avec la formule ((rand()<<32) | rand()) pour créer un nombre 64 bits à partir d'un générateur 32 bit).

built in rand 2333 score [ 017085936 ]
(2333 est la valeur fourni à la fonciton srand())

Alors on voit assez bien que certains automates ne sont pas trop mauvais sur le critère que j'utilise pour les considérer, et même nettement meilleurs que la fonction rand() fourni par la bibliothèque standard sur ma machine. Par contre il est important de bien noter que les garantie que je fourni ici ne dépasse pas la séquence effectivement étudié. Se poser la question de vérifier si les propriétés de satisfaction de mon teste resteront valide quelque soit le nombre de chaînes aléatoire demandée, ou pour toutes les initialisation initiale possible, est plus compliqué (enfin ici c'est très simple de démontrer que certaines initialisations initiales donnent de très mauvais résultats, car les automates cellulaires appliqués à un espace uniforme renvoie automatiquement un espace uniforme (et donc pas aléatoire)). L'idée de ce genre de générateur est donc de les utiliser dans des circonstances ou le nombre de chaînes aléatoires va rester raisonnable, et on peut alors vérifier que ces séquences de taille raisonnable ont de bonnes propriétés.

L'avantage de cette approche par automate cellulaire, associé à un test assez simple, mais pourtant suffisamment sévère pour bien mettre en évidence déjà des failles, c'est qu'on peut ainsi créer des chaines aléatoires arbitrairement grande, ce qui augmente d'autant la qualité du générateur.

Code:

built in rand 2333 score [ 017085936 ]
++++++++++++++++++++
sorted them
++++++++++++++++++++
0015 [b  or   d] xor  [a  xor  c] 69A5 score [ 000411334 ]
0022 [c  or   d] xor  [a  xor  b] 6999 score [ 000413236 ]
0011 [b  and  d] xor  [a  xor  c] 5A69 score [ 000414756 ]
0006 [c  and  a] xor  [d  xor  b] 36C9 score [ 000422586 ]
0009 [b  or   a] xor  [c  xor  d] 7887 score [ 000425984 ]
000a [c  or   a] xor  [d  xor  b] 6C93 score [ 000432828 ]
0016 [c  or   b] xor  [a  xor  d] 6A95 score [ 005172526 ]
0012 [c  and  b] xor  [a  xor  d] 56A9 score [ 026820056 ]
00e1 [b  or   a] xor  [c  and  d] 7778 score [ 050308852 ]
00fa [c  or   d] xor  [a  and  b] 1EEE score [ 050310128 ]
00ed [b  or   d] xor  [a  and  c] 36FA score [ 083097728 ]
0005 [b  and  a] xor  [c  xor  d] 1EE1 score [ 095417664 ]
00ee [c  or   b] xor  [a  and  d] 3F6A score [ 097222682 ]
00e2 [c  or   a] xor  [d  and  b] 5F6C score [ 106448510 ]
0004 [a  and  d] xor  [c  xor  b] 3C69 score [ 112849060 ]
01b9 [b  or   a] xor  [c  or   d] 7888 score [ 116354028 ]
001e [c  and  d] xor  [a  xor  b] 6669 score [ 117960672 ]
004c [a  and  d] or   [c  xor  b] 3C7D score [ 120056492 ]
0066 [c  and  d] or   [a  xor  b] 666F score [ 121629756 ]
004d [b  and  a] or   [c  xor  d] 1FF1 score [ 121629800 ]
0008 [a  or   d] xor  [c  xor  b] 69C3 score [ 122677484 ]
00e0 [a  or   d] xor  [c  and  b] 56FC score [ 123202248 ]
0049 [b  xor  a] or   [c  xor  d] 6FF6 score [ 124251744 ]
01b8 [a  or   d] xor  [c  or   b] 6AC0 score [ 124776000 ]
01ba [c  or   a] xor  [d  or   b] 6CA0 score [ 124776000 ]
004a [c  xor  a] or   [d  xor  b] 7BDE score [ 124776000 ]
0048 [a  xor  d] or   [c  xor  b] 7DBE score [ 124776000 ]
005a [c  and  b] or   [a  xor  d] 57AB score [ 125823488 ]
0059 [b  and  d] or   [a  xor  c] 5A7B score [ 127396648 ]
0136 [c  or   b] or   [a  and  d] 3F7F score [ 133687156 ]
0128 [a  or   d] or   [c  and  b] 57FF score [ 133687310 ]
004e [c  and  a] or   [d  xor  b] 37CD score [ 133687546 ]
012a [c  or   a] or   [d  and  b] 5F7F score [ 133687724 ]
0135 [b  or   d] or   [a  and  c] 37FF score [ 133687738 ]
0142 [c  or   d] or   [a  and  b] 1FFF score [ 133687752 ]
0129 [b  or   a] or   [c  and  d] 777F score [ 133687780 ]
006a [c  or   d] or   [a  xor  b] 6FFF score [ 133687964 ]
0051 [b  or   a] or   [c  xor  d] 7FF7 score [ 133687972 ]
005d [b  or   d] or   [a  xor  c] 7BFF score [ 133687982 ]
0050 [a  or   d] or   [c  xor  b] 7DFF score [ 133687982 ]
005e [c  or   b] or   [a  xor  d] 7FBF score [ 133687982 ]
0052 [c  or   a] or   [d  xor  b] 7FDF score [ 133687982 ]
0200 [a  or   d] or   [c  or   b] 7FFF score [ 133687982 ]
0000 [a  xor  d] xor  [c  xor  b] 6996 score [ 133688024 ]
0100 [a  and  d] and  [c  and  b] 0001 score [ 133688352 ]
0042 [c  and  d] and  [a  xor  b] 0006 score [ 133688352 ]
0105 [b  or   a] and  [c  and  d] 0007 score [ 133688352 ]
0035 [b  and  d] and  [a  xor  c] 0012 score [ 133688352 ]
0106 [c  or   a] and  [d  and  b] 0013 score [ 133688352 ]
0028 [a  and  d] and  [c  xor  b] 0014 score [ 133688352 ]
0112 [c  or   b] and  [a  and  d] 0015 score [ 133688352 ]
0036 [c  and  b] and  [a  xor  d] 0102 score [ 133688352 ]
0104 [a  or   d] and  [c  and  b] 0103 score [ 133688352 ]
002a [c  and  a] and  [d  xor  b] 0104 score [ 133688352 ]
0111 [b  or   d] and  [a  and  c] 0105 score [ 133688352 ]
0029 [b  and  a] and  [c  xor  d] 0110 score [ 133688352 ]
011e [c  or   d] and  [a  and  b] 0111 score [ 133688352 ]
00dc [a  and  d] xor  [c  and  b] 0356 score [ 133688352 ]
0124 [a  and  d] or   [c  and  b] 0357 score [ 133688352 ]
00de [c  and  a] xor  [d  and  b] 0536 score [ 133688352 ]
0126 [c  and  a] or   [d  and  b] 0537 score [ 133688352 ]
0025 [b  xor  a] and  [c  xor  d] 0660 score [ 133688352 ]
0046 [c  or   d] and  [a  xor  b] 0666 score [ 133688352 ]
002d [b  or   a] and  [c  xor  d] 0770 score [ 133688352 ]
01dd [b  or   a] and  [c  or   d] 0777 score [ 133688352 ]
00dd [b  and  a] xor  [c  and  d] 111E score [ 133688352 ]
0125 [b  and  a] or   [c  and  d] 111F score [ 133688352 ]
0026 [c  xor  a] and  [d  xor  b] 1248 score [ 133688352 ]
0039 [b  or   d] and  [a  xor  c] 125A score [ 133688352 ]
002e [c  or   a] and  [d  xor  b] 134C score [ 133688352 ]
01de [c  or   a] and  [d  or   b] 135F score [ 133688352 ]
0024 [a  xor  d] and  [c  xor  b] 1428 score [ 133688352 ]
002c [a  or   d] and  [c  xor  b] 143C score [ 133688352 ]
003a [c  or   b] and  [a  xor  d] 152A score [ 133688352 ]
01dc [a  or   d] and  [c  or   b] 153F score [ 133688352 ]
avatar
Stauk

Messages : 6462
Date d'inscription : 16/01/2015

http://www.staukwood.com/

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum