Els projectes finals són una oportunitat per aplicar tots els conceptes apresos al llarg del curs en un context pràctic i integrat. Aquests projectes estan dissenyats per desafiar-te i ajudar-te a consolidar els teus coneixements sobre anàlisi i disseny d'algorismes, així com a millorar les teves habilitats de programació i resolució de problemes.

Objectius dels Projectes Finals

  1. Aplicar Conceptes Teòrics: Utilitzar els coneixements adquirits sobre complexitat temporal i espacial, notació asimptòtica, i estratègies de disseny d'algorismes.
  2. Desenvolupar Algorismes Eficients: Crear algorismes que siguin eficients tant en termes de temps com d'espai.
  3. Optimitzar Codi: Implementar tècniques d'optimització per millorar el rendiment del codi.
  4. Treballar amb Problemes Reals: Enfrontar-se a problemes reals que requereixen solucions algorítmiques.

Projecte 1: Sistema de Recomendació de Productes

Descripció

Desenvolupa un sistema de recomanació de productes per a una botiga en línia. El sistema ha de ser capaç de recomanar productes basant-se en l'historial de compres dels usuaris.

Requisits

  • Entrada: Historial de compres dels usuaris (una llista de productes comprats per cada usuari).
  • Sortida: Una llista de recomanacions de productes per a cada usuari.
  • Algorisme: Utilitza un algorisme de filtratge col·laboratiu per generar les recomanacions.

Passos a Seguir

  1. Anàlisi de Dades: Analitza l'historial de compres per identificar patrons de compra.
  2. Disseny de l'Algorisme: Dissenya un algorisme de filtratge col·laboratiu.
  3. Implementació: Implementa l'algorisme en el llenguatge de programació de la teva elecció.
  4. Optimització: Optimitza l'algorisme per assegurar-te que és eficient en termes de temps i espai.

Exemples de Codi

def recomanar_productes(historial_compres, usuari):
    # Implementació de l'algorisme de filtratge col·laboratiu
    recomanacions = []
    # Codi per generar recomanacions
    return recomanacions

Exercici Pràctic

  • Entrada: {'usuari1': ['producteA', 'producteB'], 'usuari2': ['producteB', 'producteC']}
  • Sortida Esperada: {'usuari1': ['producteC'], 'usuari2': ['producteA']}

Projecte 2: Optimització d'un Algorisme de Cerca

Descripció

Optimitza un algorisme de cerca en una base de dades gran. L'objectiu és reduir el temps de cerca utilitzant tècniques d'optimització adequades.

Requisits

  • Entrada: Una base de dades gran (una llista de registres).
  • Sortida: El registre que coincideix amb el criteri de cerca.
  • Algorisme: Utilitza una combinació de cerca binària i estructures de dades eficients.

Passos a Seguir

  1. Anàlisi de la Base de Dades: Analitza la base de dades per identificar possibles millores.
  2. Disseny de l'Algorisme: Dissenya un algorisme de cerca optimitzat.
  3. Implementació: Implementa l'algorisme en el llenguatge de programació de la teva elecció.
  4. Optimització: Utilitza tècniques d'optimització per millorar el rendiment de l'algorisme.

Exemples de Codi

def cerca_binaria(base_dades, criteri):
    # Implementació de l'algorisme de cerca binària
    index = -1
    # Codi per realitzar la cerca
    return index

Exercici Pràctic

  • Entrada: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], criteri = 7
  • Sortida Esperada: 6 (index del valor 7)

Projecte 3: Planificació de Rutes amb Dijkstra

Descripció

Desenvolupa un sistema de planificació de rutes utilitzant l'algorisme de Dijkstra. El sistema ha de ser capaç de trobar la ruta més curta entre dues ubicacions en un graf.

Requisits

  • Entrada: Un graf representant les ubicacions i les distàncies entre elles.
  • Sortida: La ruta més curta entre dues ubicacions.
  • Algorisme: Utilitza l'algorisme de Dijkstra per trobar la ruta més curta.

Passos a Seguir

  1. Anàlisi del Graf: Analitza el graf per identificar les ubicacions i les distàncies.
  2. Disseny de l'Algorisme: Dissenya l'algorisme de Dijkstra.
  3. Implementació: Implementa l'algorisme en el llenguatge de programació de la teva elecció.
  4. Optimització: Optimitza l'algorisme per assegurar-te que és eficient en termes de temps i espai.

Exemples de Codi

def dijkstra(graf, origen, desti):
    # Implementació de l'algorisme de Dijkstra
    ruta = []
    # Codi per trobar la ruta més curta
    return ruta

Exercici Pràctic

  • Entrada: {'A': {'B': 1, 'C': 4}, 'B': {'C': 2, 'D': 5}, 'C': {'D': 1}, 'D': {}}, origen = 'A', desti = 'D'
  • Sortida Esperada: ['A', 'B', 'C', 'D']

Conclusió

Els projectes finals són una part essencial del curs, ja que et permeten aplicar els coneixements teòrics en situacions pràctiques. Assegura't de seguir els passos indicats per a cada projecte i de revisar els exemples de codi i exercicis pràctics per consolidar els teus coneixements. Bona sort!

© Copyright 2024. Tots els drets reservats