Pergunta sobre distâncias

Pergunta sobre distâncias

por José Coelho de Pina -
Número de respostas: 3

Salve,

Problema: dado um ponto origem e uma lista de pontos, determinar o ponto da lista mais próximo da origem.

Para resolver o problema acima, faz diferença qual das funções a seguir utilizamos?

 

def dist_euclidiana(p, q):
    '''(tuple, tuple) -> float
    
    Recebe dois pontos p e q e retorna a distância euclidiana
    entre eles.
    '''
    dist = 0
    for i in range(len(p)):
        dist += (p[i]-q[i])*(p[i]-q[i])
    return math.sqrt(dist)

def dist_euclidiana_2(p, q):
    '''(tuple, tuple) -> float
    
    Recebe dois pontos p e q e retorna o quadrado da distância euclidiana
    entre eles.
    '''
    dist = 0
    for i in range(len(p)):
        dist += (p[i]-q[i])*(p[i]-q[i])
    return dist

def dist_manhattan(p, q):
    '''(tuple, tuple) -> float
    
    Recebe dois pontos p e q e retorna a distância de manhattan (ou l1) 
    entre eles.
    '''
    dist = 0
    for i in range(len(p)):
        dist += abs(p[i]-q[i])
    return dist
        

 

 

Em resposta à José Coelho de Pina

Re: Pergunta sobre distâncias

por Rafael Zanuto Bianchi -

manhattan dá errado. soma dos módulos da diferença de coordenadas é maior que a distância. Exemplo do erro Origem = (2,1,0) e lista = [(1,2,0),(2,3.5,0).

manhattan((2,1,0),(1,2,0)) |--> 2  , quando a distância real é sqrt(2) ~ 1.4

manhattan((2,1,0),(2,3.5,0))|--> 1.5

 

Em resposta à Rafael Zanuto Bianchi

Re: Pergunta sobre distâncias

por Luiz Felype Azevedo Pascoal -

O problema não é determinar a distância certa, e sim qual dos pontos da lista é o mais próximo da origem. Com a origem e a lista dadas, o resultado usando as três funções são equivalentes:

 

Print Screen do Shell

Em resposta à Luiz Felype Azevedo Pascoal

Re: Pergunta sobre distâncias

por José Coelho de Pina -

Ois,

Com a origem e a lista dadas, o resultado usando as três funções são equivalentes:

Alguém sabe dizer se essas três distâncias são sempre equivalentes:

dado um ponto origem e uma lista de pontos, o ponto da lista mais próximo da origem é sempre o mesmo, independentemente da função distâncias?