• Aucun résultat trouvé

Aspects mathématiques dans les concours de programmation

N/A
N/A
Protected

Academic year: 2022

Partager "Aspects mathématiques dans les concours de programmation"

Copied!
25
0
0

Texte intégral

(1)

dans les concours de programmation

B. Meyer

Cours INF280, département INFRES

(2)

Contenu

Arithmétique et théorie des nombres Formules de combinatoire

Dénombrement et probabilités Théorie des jeux

2/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(3)

En quelques mots

Nombreuses occurrences de questions mathématiques (parfois noyées dans la narration).

Réponse immédiate ou rapide si on connaît ses formules, sinon alternative en force brute.

Favorise des compétiteurs cultivés.

Difficile de faire un cours structuré.

(4)

Méthodes ad hoc

Thèmes fréquents :

Recherche de formules ou de motifs,

(Ex : UVa10161, UVa11231)

Suites de nombres,

(Ex : UVa10408)

Systèmes de numération,

(Ex : UVa443)

Utilisation maligne desqrt,logouexp,

(Ex : UVa701, UVa10916, UVa11847)

Polynômes (produits, dérivations, évaluation).

(Ex : UVa498, UVa10268, UVa10586)

4/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(5)

Contenu

Arithmétique et théorie des nombres

Formules de combinatoire Dénombrement et probabilités Théorie des jeux

(6)

Adopter le bon type

Problèmes enapparence facile, mais calculs difficiles :

Entiers de grosse taille:

BigIntegeren Java.

Gérer à la main en C++.

Grandeprécision demandée :

Recoder une classe pour les rationnels.

6/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(7)

Exponentiation rapide

Algorithme de type diviser pour régner : Exponentiation rapide

Soit(M,·)un monoïde, g∈M et n un entier gn=gn/2·gn/2·gn%2.

Fonctionne avec desentiers, des matrices, despermutations, des chaînes de caractères, etc.

UVa306, UVa10625, UVa10710

(8)

PGCD, relation de Bezout

Algorithme d’Euclide: int gcd(int a, int b) {

if (b == 0) return a;

return gcd(b, a%b);

}

Relation de Bezout: ua+vb=dd est le PGCD :

pair<int, pair<int, int> > bezout(int a, int b) {

if (b == 0) return make_pair(a, make_pair(1, 0));

pair<int, pair<int, int> > p = bezout(b, a%b);

int d = p.first;

int u = p.second.first, v = p.second.second;

return make_pair(d, make_pair(v, u - (a/b) * v));

}

Application : u=a1 modb (inversion modulaire).

(Ex : UVa10407, UVa10090, UVa10673)

8/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(9)

Restes chinois

Soientn1,n2, …,nk des entiers deux à deux premiers entre eux.

Si : 









x b1 mod n1 x b2 mod n2

...

x bk mod nk ,

alors, en notantci= (N/ni)1 modni, on a : x≡b1c1N

n1 +b2c2N

n2 +· · ·+bkckN

nk mod N,N=n1n2· · ·nk.

(10)

Nombres premiers

On génère la liste des premiers par le crible d’Ératosthène: bitset<10000001> P;

vector<long long> premiers;

P.set(); // initialisation P[0] = P[1] = 0;

for (long long i = 2; i < pmax; i++) if (P[i]) {

for (long long j=i*i; j < pmax; j+=i) P[j]=0;

premiers.push_back(i);

}

Factorisation d’un entier n: par divisions successives, chercher les diviseurs den parmi les premiers≤√

n.

(Ex : UVa10140)

10/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(11)

Suites récurrentes ultimement périodiques

SoitS un ensemble fini,f:S→Set (xn)n∈N une suite récurrente défine parxn+1 =f(xn).

Trouverµ tel quexn+µ=xnpour tout n assez grand.

Algorithme du lièvre et de la tortue Poser l←f◦f(x0);t←f(x0).

Tant que (l̸=t), faire l←f◦f(l) ;t←f(t).

µ←0

Répéterµ←µ+1, l←f◦f(l) ;t←f(t) tant que (l̸=t).

xm+1 xm+2

xm+3 xm+4 xm+5

xm+6

xm+7 xm+8 xm+9

x0 x1

(Ex : UVa350, UVa11053)

(12)

Contenu

Arithmétique et théorie des nombres Formules de combinatoire

Dénombrement et probabilités Théorie des jeux

12/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(13)

Fibonacci, binomiaux

Suite de Fibonacci (Ex : UVa763, UVa10334, UVa10518)

Fn+2 =Fn+1+Fn, F0 =0,F1 =1.

Fn= ϕn+ (−ϕ)n

5 ,ϕ= (1+ 5)/2.

Coefficients binomiaux (Ex : UVa10219, UVa10541)

(n k

)

= n!

k!(n−k)! =

(n−1 k−1

) +

(n−1 k

) . Utiliser la formule directe pour un seul coefficient ou de la programmation dynamique pour beaucoup de coefficients.

(14)

Nombres de Catalan

Cn= 1 n+1

(2n n

)

= (2n

n )

( 2n

n+1 )

= 2n(2n1) (n+1)n Cn1. Permet de compter :

arbres binaires distincts à n sommets,

mots de{ (,)}

bien parenthésés,

triangulations d’un polygone,

chemins sous-diagonaux dans une grille carrée.

Récurrence :

Cn+1 =

n i=0

CiCni.

(Ex : UVa991, UVa10007, UVa10312)

14/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(15)

Dérangements

Définition

Undérangementest une permutation sans point fixe.

Théorème (OEIS A000166)

Le nombreDn de dérangements de{1, . . . ,n}satisfait D1 =0, D2 =1, Dn+2 = (n+1)(Dn+1+Dn).

(Ex : UVa12024)

(16)

Arbres couvrants de graphes complets

Théorème (formule de Cayley)

Il y ann2 arbres couvrants dans le graphe complet Kn. Théorème

Il y anm1mn1 arbres couvrants dans le graphe biparti completKm,n.

(Ex : UVa10843, UVa1179)

16/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(17)

Formule d’Euler pour les graphes planaires

Théorème (Euler)

Un graphe planaire avecs sommets, aarêtes et ffaces satisfait : s−a+f=2.

NB : La face extérieure est comptée.

(Ex : UVa10178)

Exemple : s=6,a=10,f=6 610+6=2

(18)

Division du disque par des cordes

Théorème (Cercle de Moser, OEIS A000127)

Un disque partagé parn cordes en position générique (i.e. 3 cordes ne sont pas concourantes) possèdeMn parts avec :

Mn=(n

4

)+(n

2

)+1.

(Ex : UVa10213)

M1 M2 M3 M4

M5 Exemple : n=5

M5 =(5

4

)+(5

2

)+1 parties

18/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(19)

Contenu

Arithmétique et théorie des nombres Formules de combinatoire

Dénombrement et probabilités Théorie des jeux

(20)

Problèmes de dénombrement

Approches :

Si possible, aborder la question comme un problème de mathématiques et trouver une formule close,

Sinon, chercher des relations de récurrence et utiliser de la programmation dynamique,

Sinon,force brute(vérifier auparavant si la taille le permet).

20/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(21)

Quelques outils

Principe d’inclusion-exclusion SoientAet Bdeux ensembles, alors :

|A∪B|=|A|+|B| − |A∩B|

Généralise à de plus grandes unions ; aussi formule d’inversion de Möbius.

(Ex : UVa10882, UVa11806)

Formule de Burnside

SoitGun groupe agissant sur un ensemble Ω, alors :

|Orbites|= 1

|G|

gG

Stabg(Ω).

Coloration de collier ou de polyèdres réguliers à permutation près.

(Ex : UVa12387)

(22)

Problèmes de probabilités

Approches :

Par du dénombrement :

P= cas favorable

cas total .

Probabilités conditionnelles parfois plus faciles à calculer.

Processus aléatoire : calculer les paramètres puis simuler le processus sur un nombre fini suffisamment grand d’étapes.

22/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(23)

Contenu

Arithmétique et théorie des nombres Formules de combinatoire

Dénombrement et probabilités Théorie des jeux

(24)

Stratégie Min-max

Jeux à deux joueurs, à somme nulle et à information complète.

Arbre de décision : nœud = position du jeu,

arête = coup qu’un joueur peut jouer.

Score calculé récursivement des feuilles vers la racine : score(p) =

{max{score(f);ffils de p} si joueur joue, min{score(f);f fils dep} si adversaire joue.

Ex : UVa10368, UVa10111

24/25 Fév. 2017 Institut Mines-Telecom Aspects mathématiques dans les concours de programmation

(25)

Jeu de Nim

Des pièces sont entassées enktas. Deux joueurs jouent à tour de rôle. À chaque tour, le joueur ou son adversaire doit retirer une ou plusieurs pièces choisies dans un même tas et perd sinon.

Solution : Soitni le nombre de pièces dans le tasi. Le (premier) joueur a une stratégie gagnante si

n1⊕n2· · · ⊕nk ̸=0 oùest le XOR.

Ex : UVa11311

Références

Documents relatifs

Dans le cas d'un aménagement complet pour la protection d'une vallée contre les crues, le pro- jet peut par exemple comporter à la fois un bar- rage d'amortissement sur un afiluent,

En effet si deux objets j et k équivalents sont classés par X dans des classes différentes, on peut voir que l’un des deux transferts qui les. réunit est

Ainsi sont définies les partitions centrales d’un ensemble E’ éventuellement infini, muni d’une probabilité L’ et de p descriptions mesurables, à valeurs.

• Aucun point si la soumission n’est pas parfaite ( Accepted ) (sauf dans le contrôle continu et concours interne). • Temps de pénalité pour les soumissions fausses (sauf dans

• Il existe aussi une classe array&lt;value_type,size&gt; en C++ 2011, plus homogène avec les autres collections, et rendant certaines interactions avec la bibliothèque standard

Très utile pour comprendre l’origine d’un segfault, ou si le programme semble faire n’importe quoi. efence redéfinit les fonctions d’allocation

2/25 Institut Mines-Telecom Aspects math´ ematiques dans les concours de programmation... En

• Aucun point si la soumission n’est pas parfaite ( Accepted ) (sauf dans le contrôle continu et concours interne). • Temps de pénalité pour les soumissions fausses (sauf dans