Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.
AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.
thumb|Partition avec 8 classes (qui sont des singletons) obtenue avec MakeSet(1), ..., MakeSet(8).|255x255px thumb|Partition avec 3 classes disjointes obtenue après Union(1, 2), Union(3, 4), Union(2, 5), Union(1, 6) et Union(2, 8).|255x255px En informatique, union-find est une structure de données qui représente une partition d'un ensemble fini (ou de manière équivalente une relation d'équivalence). Elle a essentiellement deux opérations trouver et unir et est appelée union-find, suivant en cela la terminologie anglo-saxonne : Find (trouver) : détermine la classe d'équivalence d'un élément ; elle sert ainsi à déterminer si deux éléments appartiennent à la même classe d'équivalence ; Union (unir) : réunit deux classes d'équivalence en une seule. Une autre opération importante, MakeSet, construit une classe d'équivalence contenant un seul élément, autrement dit un singleton. Afin de définir ces opérations plus précisément, il faut choisir un moyen de représenter les classes. L'approche traditionnelle consiste à sélectionner un élément particulier de chaque classe, appelé le représentant, pour identifier la classe entière. Lors d'un appel, Find(x) retourne le représentant de la classe de x. La solution la plus immédiate pour le problème des classes disjointes consiste à construire une liste chaînée pour chaque classe. On choisit alors l'élément en tête de liste comme représentant. MakeSet crée une liste contenant un élément. Union concatène les deux listes, une opération en temps constant. Malheureusement, l'opération Find nécessite alors un temps Ω(n) avec cette approche. On peut y remédier en ajoutant à chaque élément d'une liste chaînée un pointeur vers la tête de la liste ; Find est alors réalisée en temps constant (le représentant étant la tête de la liste). Cependant, on a détérioré l'efficacité de Union, qui doit maintenant parcourir tous les éléments d'une des deux listes pour les faire pointer vers la tête de l'autre liste, ce qui nécessite un temps Ω(n).
[2]Paolo Prandoni, [3]LCAV, EPFL
The Karplus-Strong algorithm is a simple method to generate synthetic
sounds with arbitrary pitch. In this notebook we will explore a few
variations of the method to illustrate some basic notions of
discrete-time signal processing.
In [1]:
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import IPython
In [2]:
plt.rcParams["figure.figsize"] [2]Paolo Prandoni, [3]LCAV, EPFL
The Parks-McClellan (PM) algorithm is a clever application of advanced
polynomial fitting techniques to the problem of FIR filter design. In
this notebook we will explore the key ideas behind the method by
considering the design of a simple Type-I lowpass filter.
NOTE: This notebook uses interactive widgets. If the interactive
controls do not work or show up, please fo [2]Paolo Prandoni, [3]LCAV, EPFL
In this notebook we will look at the practical issues associated to
plotting the DFT and in particular the DFT of real-world signals. We
will examine how to map the DFT coefficients to real-world frequencies
and we will investigate the frequency resolution of the DFT and the
effects of zero padding.
In [1]: