Explorem què és un algoritme, com funciona i el seu impacte en la presa de decisions empresarials. Descobreix com funcionen els algoritmes!

En els darrers anys, els algoritmes s'han posicionat entre els grans protagonistes del món tecnològic, primerament a causa de l'auge de les xarxes socials i, més recentment, amb la revolució de la intel·ligència artificial generativa i el seu gran exponent, Chat GPT.

Tot i que les xarxes socials i els chatbots siguin la seva cara més visible, la influència dels algoritmes s'estén més enllà de les xarxes socials. Per això, comprendre què són els algoritmes i com funcionen no només ens proporciona una visió més clara de les forces que modelen les nostres societats modernes, sinó també de com operen els sistemes en general.

 

Què és un algoritme?

En essència, un algoritme no deixa de ser un procés o un conjunt d'instruccions ben definides i dissenyades per a fer una tasca específica o resoldre un problema concret. En informàtica, els algoritmes són la base dels programes i el software, encarregats de proporcionar una seqüència clara i inequívoca de passos que, quan se segueixen, condueixen al resultat desitjat per part de la màquina o software.

Segurament, la forma més senzilla d'explicar què és un algoritme és comparant-lo amb una recepta de cuina que, fora de l'àmbit tecnològic, no deixa de ser un algoritme.

Els algoritmes poden expressar-se de diverses formes, com a llenguatge natural, pseudocodi, diagrames de flux o implementar-se directament en llenguatges de programació.

La versatilitat dels algoritmes es reflecteix en el seu ampli espectre d'aplicacions, abastant diversos usos. No obstant això, existeixen una sèrie de premisses que compleixen tots els algoritmes.

Algoritmes: Conceptes clau:

  • Entrada: Els algoritmes solen partir d'un conjunt de dades d'entrada per a produir un resultat. No obstant, hi ha algoritmes que funcionen sense dades d'entrada.
  • Sortida: Generen un resultat basat en les entrades proporcionades.
  • Definició: Cada pas de l'algoritme ha de ser definit amb precisió i sense ambigüitats.
  • Final: L'algoritme ha de tenir un final després d'un nombre concret de passos.
  • Eficàcia: Cada pas de l'algoritme ha de ser factible i realitzable mitjançant operacions bàsiques. 

Els algoritmes són fonamentals per a la resolució de problemes computacionals, i el seu disseny i anàlisi exerceixen un paper crucial en diverses aplicacions, com la classificació de dades, la cerca d'informació, l'optimització de processos i moltes més.

Com funciona un algoritme?

Com ja hem vist, els algoritmes funcionen seguint un conjunt d'instruccions dissenyades per a fer una tasca específica o resoldre un problema.

  1. Definició del problema:

    • Abans de dissenyar un algoritme, és crucial comprendre clarament el problema que s'està abordant. La definició precisa del problema ajuda a determinar els objectius i requisits que l'algoritme ha de complir.
  2. Disseny de l'algoritme:

    • En aquesta etapa, es crea el pla detallat per a resoldre el problema. Això implica identificar els passos específics que han de realitzar-se, la lògica darrere de cada pas i com interactuen entre si. Poden utilitzar-se diferents tècniques de disseny, com divideix i venceràs, algoritmes voraços o programació dinàmica.
  3. Implementació:

    • La implementació implica traduir el disseny de l'algoritme a un llenguatge de programació específic. Aquest pas involucra escriure el codi que segueix les instruccions i lògica definides durant el disseny.
  4. Entrada de dades:

    • Els algoritmes generalment requereixen dades d'entrada per a funcionar. Aquestes dades poden ser proporcionades per un usuari o extretes d'alguna font externa. La qualitat i rellevància de les dades d'entrada poden influir en el rendiment de l'algoritme.
  5. Processament:

    • Durant aquesta fase, l'algoritme realitza operacions i càlculs en les dades d'entrada segons les instruccions definides. Cada pas s'executa en seqüència, transformant gradualment les dades d'entrada en la sortida desitjada.
  6. Sortida de resultats:

    • El resultat o sortida de l'algoritme es presenta a l'usuari o s'utilitza per a realitzar accions posteriors. Pot ser un valor numèric, un conjunt de dades, un missatge, o qualsevol altra informació rellevant per a la resolució del problema.
  7. Anàlisi i optimització:

    • Després de la implementació, es realitza una anàlisi del rendiment de l'algoritme. S'avalua la seva eficiència en termes de temps i espai, i es poden realitzar ajustos per a optimitzar el seu funcionament.
  8. Iteració (si és necessari):

    • Depenent dels resultats obtinguts, pot ser necessari iterar sobre els passos anteriors per a millorar l'algoritme. Això pot implicar ajustos en el disseny, la implementació o l'optimització.

En la majoria dels casos, els algoritmes es recolzen en conjunts de dades d'entrada que es processen per a generar un resultat específic. Per exemple, es pot proporcionar a un algoritme un conjunt de números amb la tasca d'ordenar-los seqüencialment. En aquest escenari, els números constitueixen l'entrada, l'algoritme representa el procés d'ordenació, i la sortida consisteix en els mateixos números d'entrada ordenats segons les indicacions.

No obstant això, no tots els algoritmes requereixen una entrada tangible. Per exemple, un generador de números aleatoris no té una entrada definida més enllà de la sol·licitud de l'usuari per a produir una sortida aleatòria.

Algoritmes segons el llenguatge de programació

L'escriptura d'algoritmes es realitza en diversos llenguatges de programació, els més coneguts són C++, JavaScript i Python. No obstant això, no és necessari que aquests llenguatges siguin exclusivament "informàtics". Reprenent l'exemple anterior de les receptes de cuina, els algoritmes no informàtics, com les receptes, poden expressar-se en un llenguatge senzill com l'espanyol. Encara que el llenguatge utilitzat importa en funció del propòsit de l'algoritme i on s'aplicarà, en teoria, un algoritme pot redactar-se en qualsevol idioma. A la pràctica, no obstant això, la majoria d'algoritmes es tradueixen en llenguatges de programació.

Algoritmes: complexitat temporal i complexitat espacial

La complexitat temporal i la complexitat espacial són dos aspectes fonamentals en l'avaluació i anàlisi d'algoritmes. Aquests conceptes ens permeten entendre com es comporta un algoritme en termes de temps d'execució i ús de memòria a mesura que augmenta la grandària de les dades d'entrada.

Complexitat Temporal

La complexitat temporal d'un algoritme es refereix al temps que triga a executar-se en funció de la grandària de les dades d'entrada. En altres paraules, analitza com el temps d'execució augmenta a mesura que creixen les dades. La notació Big O (O) s'utilitza comunament per a descriure la complexitat temporal, expressant el pitjor cas d'execució de l'algoritme.

Comprendre la complexitat temporal és essencial per a avaluar l'eficiència d'un algoritme i prendre decisions informades sobre la seva aplicabilitat en diferents contextos.

Complexitat Espacial

La complexitat espacial d'un algoritme es relaciona amb la quantitat de memòria que utilitza en funció de la grandària de les dades d'entrada. S'analitza com els requisits de memòria de l'algoritme augmenten a mesura que s'incrementen les dades d'entrada. Igual que la complexitat temporal, la complexitat espacial s'expressa comunament amb la notació Big O. És crucial considerar la complexitat espacial en dissenyar algoritmes, especialment en entorns amb recursos limitats.

En conjunt, la comprensió de la complexitat temporal i espacial proporciona una visió integral del rendiment d'un algoritme. Un algoritme eficient ha de buscar minimitzar tant el temps d'execució com l'ús de memòria, assegurant un rendiment òptim en diverses situacions.

El problema de l'algoritme

Tot i que l'imaginari col·lectiu sovint presenta l'algoritme com una espècie de poder sobrenatural capaç de tot, la veritat és que els algoritmes ni tenen superpoders ni són capaços de resoldre qualsevol problema. Vincent Warmerdam, cofundador de PyData i expert en algoritmes i machine learning, es refereix a aquesta problemàtica en la xerrada 'The profession of solving (the wrong problem)'. L'expert sosté que la simple aplicació d'algoritmes no garanteix la resolució de problemes; de fet, adverteix que un algoritme ben concebut pot agreujar la situació si s'utilitza de manera incorrecta. Warmerdam destaca la tendència generalitzada a confiar que els algoritmes posseeixen la capacitat màgica de resoldre qualsevol inconvenient. Segons la seva experiència, molts dels seus companys experts en algoritmes  proposen la creació d'un "superalgoritme" com a solució immediata davant qualsevol desafiament empresarial presentat per un client, sense una anàlisi exhaustiva de les dades ni una avaluació de la seva veracitat.

Un exemple il·lustratiu de com la fe cega en els algoritmes pot conduir al fracàs és l'incident borsari conegut com a 'Flaix Crack' en 2010. En aquest episodi, els algoritmes borsaris van provocar un sobtat col·lapse del mercat sense una raó aparent, seguit d'una recuperació igualment inexplicable minuts després. Aquest succés va deixar perplexos fins i tot als creadors de l'algoritme, els qui van ser incapaços d'explicar el seu comportament. Aquesta falta de comprensió va evidenciar les limitacions de la intel·ligència artificial quan manca de la guia de la intel·ligència natural, és a dir, la intel·ligència humana.

Conclusió

En conclusió, els algoritmes són eines fonamentals en l'àmbit computacional que permeten resoldre problemes i fer tasques específiques. La seva versatilitat i aplicabilitat en diversos camps fan d'ells una part essencial de la tecnologia actual. No obstant això, és important tenir en compte que els algoritmes no són una solució màgica per a tots els problemes i la seva aplicació requereix una anàlisi acurada i una comprensió profunda de les dades. La complexitat temporal i espacial són aspectes clau a considerar en avaluar l'eficiència d'un algoritme.

Publicat per Núria Emilio