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.
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.
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 ja hem vist, els algoritmes funcionen seguint un conjunt d'instruccions dissenyades per a fer una tasca específica o resoldre un problema.
Definició del problema:
Disseny de l'algoritme:
Implementació:
Entrada de dades:
Processament:
Sortida de resultats:
Anàlisi i optimització:
Iteració (si és necessari):
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.
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ó.
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.
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.
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.
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.