Aller au contenu

Détection de Cycle (Floyd)

Algorithme du lièvre et de la tortue

Exercice Intermédiaire · Algorithmique · prepa scientifique et economique (CPGE)

Enonce

Implémenter la détection de cycle dans une liste chaînée avec l'algorithme de Floyd. Retourner True si un cycle existe.

⚠ Bonus : Trouver le nœud d'entrée du cycle.

Signature attendue

def detecter_cycle(tete) -> bool:

Exemples

  • detecter_cycle(Maillon(1, Maillon(2, Maillon(3)))) → False
  • n = Maillon(1) ; n.suivant = n ; detecter_cycle(n) → True

📖 Rappel de cours

L'algorithme de Floyd utilise deux pointeurs : un lent (tortue, +1) et un rapide (lièvre, +2). S'il y a un cycle, ils se rencontreront.

Principe :

Si la liste a un cycle de longueur $\lambda$ commençant à la distance $\mu$ de la tête :

$\text{Rencontre après au plus } \mu + \lambda \text{ pas}$

Espace $O(1)$ — pas besoin d'ensemble de nœuds visités.

← Exercices d'algorithmique en Python — tris, dichotomie, récursivité

Exercices du meme theme

  • Algorithme glouton : rendu de monnaie
  • Sac à dos (Programmation Dynamique)
  • Plus Longue Sous-séquence Commune (LCS)
  • Arbres Binaires — Parcours et Hauteur
  • Arbre Binaire de Recherche (ABR)
  • Tri par Tas (Heap Sort)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite