Ainda na área de Inteligência Artificial, duas operações comuns são as operações argmax e argmin, que retornam o índice do maior e menor elemento em um vetor, respectivamente.
Implemente a função argmax, que recebe um vetor de floats e retorna o índice do maior elemento no vetor.
Também implemente a função argmin, que recebe um vetor de floats e retorna o índice do menor elemento no vetor.
Por exemplo, para o vetor V=[4.1,0.15,1000.9], argmax(V)=2 e argmin(V)=1.

Passo 1

O enunciado pede duas funções, argmax e argmin, que recebem um vetor de floats e retornam, respectivamente, o índice do maior e o do menor elemento. Para isso usamos varredura linear (linear scan): percorremos o vetor uma vez, mantendo o melhor valor encontrado até então e o seu índice.

Passo 2

Para implementar argmax, vamos:
  • Assumir que o vetor não está vazio.
  • Inicializar \(maior_valor =\) vetor[\(0\)] e \(indice_maior =0\).
  • Percorrer i de \(1\) até len(vetor)-\(1\).
  • A cada passo, se vetor[i] > \(maior_valor\), atualizamos \(maior_valor =\) vetor[i] e \(indice_maior =\) i.
  • No final, retornamos \(indice_maior\).

Passo 3

Para implementar argmin, o raciocínio é o mesmo, trocando a condição de comparação:
  • Inicializar menorvalor = vetor[0] e indicemenor = 0.
  • Percorrer i de 1 até <=n(vetor) - 1.
  • Se vetor[i] < menorvalor, atualizamos menorvalor = vetor[i] e indicemenor = i.
  • Retornamos indicemenor ao final.

Resposta

def argmax(vetor):
    """
    Retorna o índice do maior elemento em um vetor não vazio de floats.
    """
    \(maior_valor =\) vetor[\(0\)]
\[indice_maior =0\]
    for i in range(\(1\), len(vetor)):
        if vetor[i] > \(maior_valor\):
            \(maior_valor =\) vetor[i]
            \(indice_maior =\) i
    return \(indice_maior\)

def argmin(vetor):
    """
    Retorna o índice do menor elemento em um vetor não vazio de floats.
    """
    \(menor_valor =\) vetor[\(0\)]
\[indice_menor =0\]
    for i in range(\(1\), len(vetor)):
        if vetor[i] < \(menor_valor\):
            \(menor_valor =\) vetor[i]
            \(indice_menor =\) i
    return \(indice_menor\)

Exercícios relacionados