Skip to content

Commit a6f722a

Browse files
authored
Add contents from ensae_teaching_cs (#34)
* add first tds * add j2048 * add one notebook * add pyramide * add premier pas * add more notebook * add vigenere * add more notebooks * add more notebooks * add carre magique * add classe heritage * add texte_langue * add * clean * update data * update notebook * requirements * update notebooks * fix urls * url * fix documentation * fix links * style
1 parent 731ea77 commit a6f722a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+10199
-176
lines changed

.github/workflows/check-urls.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ jobs:
4343
timeout: 5
4444
retry_count# : 3
4545
exclude_urls: https://www.data.gouv.fr/fr/datasets/r/4acad602-d8b1-4516-bc71-7d5574d5f33e,http://www.xavierdupre.fr/enseignement/complements/,https://www.gutenberg.org/cache/epub/12587/pg12587.txt,https://www.insee.fr/fr/statistiques/fichier/2407910/,https://castor-informatique.fr,https://hal.archives-ouvertes.fr/hal-00990252/document,https://github.com/onnx/models/raw/main/vision/classification/mobilenet/model/mobilenetv2-12.onnx,https://arxiv.org/ftp/arxiv/papers/1510/1510.04863.pdf,https://hal.science/hal-01125940,https://www.data.gouv.fr/fr/datasets/r/63352e38-d353-4b54-bfd1-f1b3ee1cabd7,https://github.com/sdpython/teachpyx/raw/main/_data/examen2021.zip,https://www.enseignement.polytechnique.fr/informatique/INF423/uploads/Main/poly-good.pdf
46-
exclude_patterns: https://github.com/sdpython/teachpyx/blob/main/_doc/practice/exams/,https://github.com/sdpython/teachpyx/raw/exos/_data/,https://www.data.gouv.fr/fr/datasets/r/e3d83ab3-dc52-4c99-abaf-8a38050cc68c,https://github.com/onnx/models/raw/main/vision/classification/mobilenet/model/mobilenetv2-12.onnx,https://www.data.gouv.fr/fr/datasets/r/63352e38-d353-4b54-bfd1-f1b3ee1cabd7,https://github.com/sdpython/teachpyx/raw/main/_data/examen2021.zip
46+
exclude_patterns: https://github.com/sdpython/teachpyx/blob/main/_doc/practice/exams/,https://github.com/sdpython/teachpyx/raw/main/_data/,https://www.data.gouv.fr/fr/datasets/r/e3d83ab3-dc52-4c99-abaf-8a38050cc68c,https://github.com/onnx/models/raw/main/vision/classification/mobilenet/model/mobilenetv2-12.onnx,https://www.data.gouv.fr/fr/datasets/r/63352e38-d353-4b54-bfd1-f1b3ee1cabd7,https://github.com/sdpython/teachpyx/raw/main/_data/examen2021.zip
4747
# force_pass : true

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ _doc/examples/*.html
2929
_doc/_static/require.js
3030
_doc/_static/viz.js
3131
_doc/practice/algo-compose/paris_54000.*
32+
_doc/practice/tds-base/*.txt
33+
_doc/practice/tds-base/*.csv
34+
_doc/practice/tds-base/*.zip
35+
_doc/practice/tds-base/*.html
36+
_doc/practice/tds-base/monmodule*.*
3237
_doc/c_data/*.csv
3338
_doc/c_data/*.txt
3439
_doc/c_data/*.xlsx

_data/README.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ Sources
66
`Le Dernier Jour d'un Condamné by Victor Hugo <https://www.gutenberg.org/ebooks/6838>`_
77
* `examen2021.zip <examen2021.zip>`_ :
88
* `paris_54000.zip <paris_54000.zip>`_ :
9-
* `donnees_enquete_2003_television.txt <donnees_enquete_2003_television.txt>`_ :
9+
* Naissance, décès, mariages 2012 : `Naissance, décès, mariages 2012 <https://www.insee.fr/fr/statistiques/2407910?sommaire=2117120>`_
10+
* `voeux.zip <voeux.zip>`_ : collection de voeux présidentiels récupérés
11+
depuis le site de l'`Elysée <https://www.elysee.fr/>`_
12+
* `articles.zip <articles.zip>`_ : collection d'articles en anglais et en français

_data/articles.zip

108 KB
Binary file not shown.

_data/seance4_excel.csv

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
X,Y,value
2+
1,1,0
3+
2,1,1
4+
3,1,2
5+
1,2,-1
6+
2,2,0
7+
3,2,1
8+
1,3,-2
9+
2,3,-1
10+
3,3,0
11+
1,4,-3
12+
2,4,-2
13+
3,4,-1
14+
1,5,-4
15+
2,5,-5

_data/seance4_excel.xlsx

8.52 KB
Binary file not shown.

_data/voeux.zip

36.6 KB
Binary file not shown.

_doc/practice/algorithm_culture.rst renamed to _doc/algorithm_culture.rst

Lines changed: 92 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
Survol algorithmique
55
====================
66

7-
Il est facile de caler un modèle statistiques lorsque les données sont propres
8-
et de taille raisonnable. Ce n'est quasiment jamais le cas.
9-
On a besoin de nettoyer ou de transformer les données. On a besoin
10-
de réduire le temps de calcul d'un algorithme car il est inexploitable en l'état.
11-
Pour ces deux raisons, il est utile de connaître quelques algorithmes
12-
afin d'avoir d'avoir des idées. On a besoin d'avoir un moyen rapide, visuelle
13-
et efficace de comparer deux résultats.
7+
L'algorithmie est une partie des mathématiques. On part toujours d'un état
8+
initial pour arriver après une série d'opérations connues à un état final.
9+
Cette série dépend de l'état initial. Elle peut inclure de l'aléatoire.
10+
On parle d'algorithme lorsqu'on arrive à démontrer que la séquence
11+
d'opération qu'il produit mène toujours à l'état final souhaité
12+
quel que soit l'état initial. Il existe une grande variété de problèmes
13+
déjà résolus qu'il est utile de connaître. C'est autant d'outils disponibles
14+
pour créer ses propres algorithmes.
1415

1516
Ordres de grandeur
1617
++++++++++++++++++
@@ -119,7 +120,7 @@ Catalogue d'algorithmes
119120
* `problème d'ordonnancement <http://fr.wikipedia.org/wiki/Th%C3%A9orie_de_l'ordonnancement>`_ **algo**
120121
* Permutations
121122
* `Sattolo's algorithm <https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Sattolo's_algorithm>`_ **algo**
122-
* Problème non `NP-complet <http://fr.wikipedia.org/wiki/Liste_de_probl%C3%A8mes_NP-complets>`_
123+
* Problème non :epkg:`NP-complet`
123124
* `Problème du voyageur de commerce <http://fr.wikipedia.org/wiki/Probl%C3%A8me_du_voyageur_de_commerce>`_ **algo**
124125
(ou `Graphe Hamiltonien <http://fr.wikipedia.org/wiki/Graphe_hamiltonien>`_),
125126
lire `Solution of a Large-Scale Traveling-Salesman Problem <http://www.cs.uleth.ca/~benkoczi/OR/read/tsp-dantzig-fulkerson-johnson-54.pdf>`_.
@@ -225,17 +226,88 @@ le tri `heapsort <https://github.com/nryoung/algorithms/blob/master/algorithms/s
225226
Problèmes NP-complets
226227
+++++++++++++++++++++
227228

229+
On distingue trois classes de problèmes
230+
*P*, *NP*, *NP-complet*.
231+
232+
**coût**
233+
234+
**P**
235+
236+
Un problème appartient à la
237+
`classe P <https://fr.wikipedia.org/wiki/P_(complexit%C3%A9)>`_
238+
s'il peut être décidé en temps polynômial.
239+
240+
**NP**
241+
242+
Un problème de décision est dans
243+
`NP <https://fr.wikipedia.org/wiki/NP_(complexit%C3%A9)>`_
244+
s'il est décidé par une
245+
`machine de Turing non déterministe <https://fr.wikipedia.org/wiki/Machine_de_Turing_non_d%C3%A9terministe>`_
246+
en temps polynomial par rapport à la taille de l'entrée.
247+
Cela implique que pour un problème *A*, il est possible
248+
de vérifier qu'un *mot m* est solution de *A* en temps polynomial.
249+
250+
**NP-complet**
251+
252+
Un problème :epkg:`NP-complet`
253+
est un problème qui n'admet pas d'algorithmes capables de trouver une solution
254+
en un temps polynomial. Plus précisément, pour deux problèmes *A* et *B* de cette classe,
255+
il existe une transformation (ou *réduction*) *f* qui transforme
256+
le problème *A* en *B*.
257+
258+
**BPP**
259+
260+
La classe `BPP <https://fr.wikipedia.org/wiki/BPP_(complexit%C3%A9)>`_
261+
est un objet de la théorie de la complexité, en informatique théorique.
262+
C'est une classe de problèmes de décision qui peut être définie avec des
263+
`machines de Turing probabilistes <https://fr.wikipedia.org/wiki/Machine_de_Turing_probabiliste>`_.
264+
L'acronyme BPP vient de Bounded-error Probabilistic Polynomial time.
265+
266+
**P=NP ?**
267+
268+
C'est un problème encore irrésolu :
269+
`Problème P = NP <https://fr.wikipedia.org/wiki/Probl%C3%A8me_P_%3D_NP>`_.
270+
271+
**Problème NP complets**
272+
228273
* `21 problèmes NP-complet de Karp <https://fr.wikipedia.org/wiki/21_probl%C3%A8mes_NP-complets_de_Karp>`_
229274
* `Liste de problèmes NP complets <https://fr.wikipedia.org/wiki/Liste_de_probl%C3%A8mes_NP-complets>`_
230275
(`en <https://en.wikipedia.org/wiki/List_of_NP-complete_problems>`_)
231-
* :ref:`l-np-complets`
232276

233-
.. index:: morphisme
234277

235-
Un peu de morphisme parce que ça m'a toujours fasciné :
278+
Idée pour démonstrer qu'un problème est NP-complet
279+
++++++++++++++++++++++++++++++++++++++++++++++++++
280+
281+
Une preuve complète est donnée dans le cours
282+
`Logique, modèles, calculs (INF 423)
283+
<https://www.enseignement.polytechnique.fr/informatique/INF423/uploads/Main/poly-good.pdf>`_.
284+
285+
**1**
286+
287+
L'idée est toujours la même : il faut partir d'un problème NP-complet connu
288+
et le réduire de façon polynomial au problème *P* dont on cherche à démontrer qu'il
289+
est NP-complet. La *réduction* est une transformation d'un problème
290+
*A* en *P* de telle sorte qu'une solution problème *A*
291+
puisse être transformé en une solution du problème *P* et réciproquement.
236292

237-
* `Efficient and practical tree preconditioning for solving Laplacian systems <http://www.lix.polytechnique.fr/~maks/papers/SEA_2015_draft.pdf>`_
238-
* `A Survey on Data-driven Dictionary-based Methods for 3D Modeling <http://www.lix.polytechnique.fr/~maks/papers/dictionary_survey.pdf>`_
293+
**2**
294+
295+
Il faut un premier problème NP-complet pour lequel il faut démontrer la NP-complétude.
296+
C'est le théorème de `Stephen Cook <https://fr.wikipedia.org/wiki/Stephen_Cook>`_ :
297+
le problème `SAT <https://fr.wikipedia.org/wiki/Probl%C3%A8me_SAT>`_ est NP-complet.
298+
On peut montrer que les problème SAT et
299+
`3-SAT <https://fr.wikipedia.org/wiki/Probl%C3%A8me_SAT#3-SAT>`_ sont équivalents.
300+
301+
**3**
302+
303+
Beaucoup de problèmes se présentent sous la forme d'une optimisation.
304+
Or *SAT* est un problème de décision : existe-t-il un point de
305+
:math:`\acc{0,1}^N` qui vérifie une clause logique :
306+
:math:`\vee_k ( y_{1k} \wedge ... \wedge y_{n_k k} )`
307+
avec :math:`y_{ik}` est soit :math:`x_i` soit :math:`\neg x_i` ?
308+
Pour passer de l'un à l'autre, on transforme le problème d'optimisation
309+
en un problème de décision : existe-t-il une solution dont l'évaluation
310+
est inférieure ou supérieur à un certain seuil ?
239311

240312
Liens
241313
+++++
@@ -276,6 +348,13 @@ Livres
276348
(`documentation <http://jilljenn.github.io/tryalgo/>`_)
277349
et d'un site web `Résolution de problèmes algorithmiques <http://tryalgo.org/>`_
278350

351+
Des applications possibles :
352+
353+
* `Efficient and practical tree preconditioning for solving Laplacian systems
354+
<http://www.lix.polytechnique.fr/~maks/papers/SEA_2015_draft.pdf>`_
355+
* `A Survey on Data-driven Dictionary-based Methods for 3D Modeling
356+
<http://www.lix.polytechnique.fr/~maks/papers/dictionary_survey.pdf>`_
357+
279358
Pour s'entraîner
280359
++++++++++++++++
281360

_doc/api/faqs.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ teachpyx.faq.faq_python
55
+++++++++++++++++++++++
66

77
.. automodule:: teachpyx.faq.faq_python
8+
:members:
89

910
teachpyx.faq.faq_exception
1011
++++++++++++++++++++++++++
1112

1213
.. automodule:: teachpyx.faq.faq_exception
14+
:members:
1315

1416
teachpyx.faq.faq_numpy
1517
++++++++++++++++++++++
1618

1719
.. automodule:: teachpyx.faq.faq_numpy
20+
:members:

_doc/c_data/dataframes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Dataframes
33
==========
44

55
.. toctree::
6+
:maxdepth: 2
67

78
nb_dataframe
89
nb_pandas

0 commit comments

Comments
 (0)