Information

Author(s) Nikita Tyunyayev
Deadline Keine Frist
Abgabenlimit No limitation

Einloggen

Graphes 1 - Reconnaître un graphe

Dans le cours, un graphe est défini comme un triple :

  • N : un ensemble fini de nœuds ;
  • R : un ensemble fini d'arêtes ;
  • I : une relation d'incidence I ⊂ N × R, telle que toute arête est incidente à 1 ou 2 nœuds.

Dans cet exercice, ces trois ensembles sont représentés par trois ensembles Python (set) :

  • N : l'ensemble des nœuds ;
  • R : l'ensemble des arêtes ;
  • I : l'ensemble des couples (n, r) qui signifient « le nœud n est incident à l'arête r ».

Le triple (N, R, I) représente un graphe si et seulement si :

  1. chaque élément de I est un couple (n, r) avec n dans N et r dans R ;
  2. chaque arête de R apparaît dans un ou deux couples de I (une arête incidente à un seul nœud est une boucle).

Remarques :

  • deux arêtes différentes peuvent être incidentes aux deux mêmes nœuds (arêtes parallèles) ;
  • un nœud peut n'être incident à aucune arête ;
  • les ensembles peuvent être vides.

Exemple d'un triple qui est un graphe ("c" est une boucle sur le nœud 3) :

N = {1, 2, 3}
R = {"a", "b", "c"}
I = {(1, "a"), (2, "a"), (2, "b"), (3, "b"), (3, "c")}

Exemple d'un triple qui n'est pas un graphe (l'arête "b" n'est incidente à aucun nœud) :

N = {1, 2, 3}
R = {"a", "b"}
I = {(1, "a"), (2, "a")}

La fonction est_graphe(N, R, I)

Écrivez une fonction est_graphe(N, R, I) qui renvoie True si le triple (N, R, I) représente un graphe au sens de la définition ci-dessus, et False sinon.

Les préconditions et postconditions de la fonction sont données dans sa docstring ci-dessous : lisez-les attentivement.

Vous pouvez définir d'autres fonctions auxiliaires si nécessaire.

Évaluation. Votre fonction est testée sur une série de triples, dont certains sont des graphes et d'autres non. Deux taux de réussite sont calculés : la proportion de graphes que votre fonction reconnaît (elle renvoie True) et la proportion de non-graphes qu'elle rejette (elle renvoie False). La note est le plus petit des deux taux. Une fonction qui accepte tout, ou qui rejette tout, obtient donc 0. Le feedback dessine chaque test avec la réponse attendue et la vôtre.