Métriques a l’Eixample

Una mètrica o funció distància és una funció que defineix una distància entre cada parell d’elements d’un conjunt. Per exemple, la distància euclidiana, o mètrica euclidiana, és la distància ordinària entre dos punts que es mesuraria amb un regle.

Donats dos punts en el pla, el punt \(p\) amb coordinades cartesianes \((p_1, p_2)\), i el punt \(q\) amb coordenades \((q_1, q_2)\), definim dos mètriques per calcular \(d(p,q)\), la distància entre \(p\) i \(q\):

  • la mètrica del taxista o distància de Manhattan, també coneguda com distància rectilínia, que es calcula amb la fòrmula

    \[d(p,q) = |p_1 − q_1| + |p_2 − q_2|\]
  • la distància de Txebixov, també coneguda com distància de l’escaquer, ja que en els escacs, representa el nombre mínim de moviments que necessita un rei per anar d’una casella a una altra i que es calcula amb la fòrmula

    \[d(p,q) = max\left\{|p_1 − q_1|, |p_2 − q_2|\right\}.\]
  1. Dissenya la funció dist_manh que donades les coordenades p1, p2 d’un punt p, i les coordenades q1, q2 d’un punt q, retorna la distància de Manhattan entre els punts p i q (ha de ser un valor de tipus float).

    Desa la funció al fitxer metriques.py. La funció ha de passar el següent doctest:

    >>> dist_manh(1,2,3,4)
    4.0
    >>> dist_manh(1,3,2,4)
    2.0
    >>> dist_manh(-3,-4,-1,-2)
    4.0
    

    Nota

    Pots descarregar el fitxer amb tests metriques1.txt

  2. Dissenya la funció dist_txeb que donades les coordenades p1, p2 d’un punt p, i les coordenades q1, q2 d’un punt q, retorna la distància de Txebixov entre els punts p i q (ha de ser un valor de tipus float).

    Desa la funció al fitxer metriques.py. La funció ha de passar el següent doctest:

    >>> dist_txeb(1,2,3,4)
    2.0
    >>> dist_txeb(1,3,1,4)
    1.0
    >>> dist_txeb(-4,-4,1,-2)
    5.0
    

    Nota

    Pots descarregar el fitxer amb tests metriques2.txt

  3. Dissenya la funció cost_despl que donades les coordenades p1, p2 d’un punt p, les coordenades q1, q2 d’un punt q, una funció dist que calcula la distància entre dos punts, i el preu d’un desplaçament unitari preuUnitat, retorna un float amb el preu corresponent al desplaçament des del punt p fins al punt q fent servir la funció de distancia dist.

    Desa la funció al fitxer metriques.py. La funció ha de passar el següent doctest:

    >>> cost_despl(1,2,3,4,dist_manh,1.5)
    6.0
    >>> cost_despl(1,2,3,4,dist_txeb,1.5)
    3.0
    >>> cost_despl(-3,-4,-1,-2,dist_manh,1.5)
    6.0
    >>> cost_despl(1,-9,9,4,dist_manh,1.5)
    31.5
    

    Nota

    Pots descarregar el fitxer amb tests metriques3.txt

Solucions

Disposeu de solucions al fitxer metriques.py.