Skip to content

Qu'est ce qu'un maximum ?

Définition

On appelle maximum d'un ensemble \mathcal{E} de nombres une valeur v telle que:

  • v\in\mathcal{E}
  • Pour toute valeur w\in\mathcal{E}: w \leqslant v.

Remarque

On peut plus généralement parler d'élément maximum sur un ensemble d'éléments \mathcal{E} pour lesquels on aura défini un critère de "comparaison".

Par exemple, on peut travailler sur un ensemble de mots, un mot étant inférieur à un autre s'il est placé avant lui dans un dictionnaire (ordre alphabétique).

Exercice

On définit la fonction python suivante:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def f(tab, v):
    """
    tab est une liste d'entiers.
    v est un entier.
    """
    for x in tab:
        if v < x:
            return False
    return True


# Exemple d'utilisation

L = [3, 2, 8, 1, 7]
print(f(L, 8))

Soit L une liste d'entiers et v un entier. Sachant que f(L,v) vaut True, peut-on en déduire que v est une valeur maximale de la liste L ? Si oui, justifier. Si non, définir une fonction g, utilisant la fonction f, prenant les mêmes paramètres que f et telle que:

g(tab, v) == True si et seulement si v est une valeur maximale de tab.

Une réponse

Lorsque f(L,v) vaut True, on a la garantie que v est un majorant de la liste, c'est à dire une valeur supérieure ou égale à chacune des valeurs de la liste.

Mais v n'est pas nécessairement une valeur maximale de la liste L car la valeur v n'est pas nécessairement présente dans la liste. Par exemple, avec L = [3, 2, 8, 1, 7], f(L, 9) a pour valeur True, alors que 9 n'est pas dans la liste L

Une proposition pour la fonction g:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def f(tab, v):
    for x in tab:
        if v < x:
            return False
    return True


def g(tab,v):
    return f(tab,v) and v in L

# Exemple d'utilisation

L = [3, 2, 8, 1, 7]
print(g(L, 8)) # affiche True
print(g(L, 9)) # affiche False
Plus concis

On peut condenser le code précédent en utilisant all:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def est_max(tab,v):
    """
    list * int -> bool
    La fonction renvoie True si v est élément max de la liste tab,
    et renvoie False sinon.
    """
    return v in L and all(x <= v for x in tab) 

# Exemple d'utilisation
L = [3, 2, 8, 1, 7]
print(est_max(L, 8)) # affiche True
print(est_max(L, 9)) # affiche False