Algorithmique puante Flashcards

1
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un algorithme ?

A

Un algorithme est un suite d’opérations censée résoudre un problème. Il manipule des données d’entrée et produit une sortie répondant au problème.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce que le typage ?

Au sens de la classification.

A

Le typage c’est le fait de classifier des données (par types) selon les opérations qui sont possibles.

Par exemple : Deux nombres peuvent être additionnés ensemble alors que deux chaînes de caractères peuvent être concaténées ensemble.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type ?

A

Un type c’est un ensemble de valeurs et des opérations possibles sur ces valeurs. Un type vérifie un certain nombre de propriétés et on le représente par un identifiant (son nom).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’une donnée ?

A

Une donnée c’est une constante OU une entité qui possèdde un type, une valeur et un identifiant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’une variable ?

A

Une variable est une entité qui va pointer sur un espace mémoire.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type primitif ?

A

Un type primitif est fourni par défaut et a une valeur non décomposable.

Dans le cadre du cours, on fournit les entiers, les réels, les caractères, les booléens et les chaînes de caractères.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type composé ? Citer les quatre types composés vus en cours.

A

Un type composé est construit à partir d’autres types. Dans ce cours on compte :

  • Le type produit
  • Le type somme
  • Le type enregistrement
  • Le constructeur de tableau
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type produit ? En donner un exemple.

Formellement.

A

Soient T1, T2, …, Tn de types.
Le type produit, c’est le produit cartésien des Ti avec comme valeurs (x1, x2, …, xn) pour tout xi une valeur du type Ti

Par exemple : un tuple en python.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type somme ? En donner un exemple.

Formellement

A

Soient T1, T2, …, Tn de types.
Le type somme T est la somme des Ti si chaque valeur de x est une valeur d’un certain Ti et chaque valeur d’un Ti est une valeur de T.

Par exemple : une union en C.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

2 - Algo - Variables, Types et Valeurs

Qu’est-ce qu’un type enregistrement ?

Formellement.

A

Le type enregistrement est composé de pusieurs entités appelées champs, chacun ayant un identifiant, un type et une valeur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

2 - Algo - Variables, Types et Valeurs

Quest-ce que le constructeur de tableau ?

A

Un tableau est un ensemble de valeurs contigues avec accès constant.. Pour réserver la place mémoire pour n valeurs de taille p, on réserver n x p bits.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

3 - Algo - Types de données abstraits (TDA)

Qu’est-ce qu’un TDA ?

A

Une TDA c’est une entitée constituée :

  1. D’une signature
  2. D’une liste d’axiomes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

3 - Algo - Types de données abstraits (TDA)

Que contient la signature d’un TDA ?

A

La signature est composée de :

  • Un identifiant
  • Les identifiants, paramètres et types de retours de chaque opération
  • Un ensemble de types prédéfinis à utiliser
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

3 - Algo - Types de données abstraits (TDA)

A quoi servent les axiomes d’un TDA ?

A

Les axiomes d’un TDA définissent le comportement des opération sur les valeurs du TDA.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

3 - Algo - Types de données abstraits (TDA)

Qu’est-ce qu’une implémentation ? En quoi cela résulte ?

A

Une implémentation c’est une façon de représenter en machine le TDA en proposant une façon de manipuler cette représentation au travers des opérations du TDA. Cela résulte en un Type de Données Concret (TDC).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3 - Algo - Types de données abstraits (TDA)

Quel est le paradigme d’une pile ?

A

Last in, First out (LIFO)

17
Q

3 - Algo - Types de données abstraits (TDA)

Quel est le paradigme d’une file ?

A

First in, First out (FIFO)

18
Q

4 - Algo - Elements de complexité

Qu’est-ce qu’un algorithme valide ?

A

Un algorithme valide pour un problème est un algorithme qui le résout. Plus précisémment, pour toute instance valide en entrée, l’algorithme doit calculer le résultat attendu.

19
Q

4 - Algo - Elements de complexité

Quels sont les critères de qualité d’un algorithme ?

A
  • La quantité d’espace mémoire utilisée
  • Le temps de calcul
20
Q

4 - Algo - Elements de complexité

Comment mesure-t-on la performance temporelle d’un algorithme ?

A

On donne une valeur à chaque instance et on mesure le nombre d’instructions par rapport à cette valeur.

21
Q

4 - Algo - Elements de complexité

Comment évalue-t-on le nombre d’instructions ?

A

On utilise la fonction valeur(x) qui est robuste et indépendante de l’encodage. On suppose alors que :

  • Les entiers sont représentés en base x, x ≥ 2
  • La représentation d’un ensemble E ne dépasse pas :
    (taille d’un élément) x |E| x c
22
Q

4 - Algo - Elements de complexité

Quel est l’ensemble des fonctions majorées par :
f : x ↦ 3x + 5

23
Q

4 - Algo - Elements de complexité

Quel est l’ensemble des fonctions minorées par :
f : x ↦ x2

24
Q

4 - Algo - Elements de complexité

Quel est l’ensemble des fonctions bornées par :
f : x ↦ x2

25
# 4 - Algo - Elements de complexité Quelle est la **complexité d'un algorithme** A ? | Formellement
On note CA le nombre d'instructions de l'algorithme, on a [l'égalité suivante](https://i.imgur.com/jfo9NcC.png) :
26
# 4 - Algo - Elements de complexité Quelle est la **complexité d'une affectation** ? | Formellement
Si I est une affection et x une expression, on a [l'égalité suivante](https://i.imgur.com/Z3WHK74.png) :
27
# 4 - Algo - Elements de complexité Quelle est la **complexité d'une expression arithmétique** ? | Formellement
Si I est un expression arithmétique, alors on a [l'égalité suivante](https://i.imgur.com/TGjBJe4.png).
28
# 4 - Algo - Elements de complexité Quelle est la **complexité de lecture d'une variable** ?
Une variable se lit **en temps constant**.
29
# 4 - Algo - Elements de complexité Quelle est la **complexité d'un appel de fonction** ? | Formellement
Si I = f(e1, e2, ..., ep), alors on a [l'égalité suivante](https://i.imgur.com/oGQ913f.png).
30
# 4 - Algo - Elements de complexité Quelle est la **complexité d'une boucle** ? | Formellement
Si I est une boucle avec l itérations et à chaque itération on exécute l'algorithme Ai, alors on a [l'égalité suivante](https://i.imgur.com/cQr8OWg.png).
31
# 4 - Algo - Elements de complexité Quelle est la **complexité d'une condition** ? | Formellement
Si I est une condition, alors on a [l'égalité suivante](https://i.imgur.com/3Q89DKu.png).
32
# 5 - Algo - TDA Listes **Classez les complexités** suivantes : * logarithmique * linéaire * polynomiale * factorielle * exponentielle * constante * quadratique * polylogarithmique
* constante : O(1) * logarithmique : O(log(n)) * polylogarithmique : O(log(n)c * linéaire : O(n) * quadratique : O(n2) * polynomiale : O(nc) * exponentielle : O(cn) * factorielle : O(n!) ≃ O(2nlog(n))
33
# 5 - Algo - TDA Listes Qu'est-ce que le **TDA liste** ?
Le **TDA liste** est un ensemble ordonné avec un **accès direct au premier élément**. A partir de ce premier élément, on peut accéder au deuxième, puis au troisième, etc.
34
# 5 - Algo - TDA Listes Donnez deux implémentations **avec un tableau** des **listes simplement chaînées**.
* Un tableau dont le contenu des cases est la position de l'élément suivant. * Une tableau dont le contenu des cases est un enregistrement Cellule_T qui contient l'indice de l'élément suivant.
35
# 5 - Algo - TDA Listes Comment **concaténer deux listes en temps constant** ? * Listes simplement chaînéées * Listes simplement chaînée circulaires * Listes doublement chaînées circulaires
* Il faut avoir un accès constant au début et à la fin * Il faut créer un case tampon que l'on ne supprime jamais et qui sera toujours le premier élément de la liste * Il faut faire pointer la fin de l'une au début de l'autre et le début de l'autre à la fin de l'une, c'est le cas le plus naturel
36
# 6 - Algo - Graphes Quelles sont les **deux solutions communes** pour représenter **un graphe** ? | Détaillez les représentations.
* **Matrice d'adjacende** Il s'agit (i) d'un tableau de taille n, dont les indices représentent les sommets et les valeurs les couleurs. (ii) d'une matrice booléenne de taille n2 telle que la case (i, j) vaut 1 si (i, j) est une arête. * **Matrice d'incidence** ou Liste d'adjacence Il s'agit d'un tableau de taille n, dont les indices représentent les sommet et dont chaque case contient les deux informations suivantes : (i) la couleur, (ii) la liste des sommets voisins.
37
# 6 - Algo - Graphes Quelle est la **complexité en mémoire** de la **matrice d'adjacence** ?
**O(n2 + n)**, avec n le nombre de sommets.
38
# 6 - Algo - Graphes Quelle est la **complexité en mémoire** de la **matrice d'incidence** ?
**O(n + m)**, avec n le nombre de sommets et m le nombre d'arêtes.