logo

Definició, Tipus, Complexitat i Exemples d'Algorisme

Un algorisme és una tècnica computacional seqüencial ben definida que accepta un valor o una col·lecció de valors com a entrada i produeix les sortides necessàries per resoldre un problema.

O podem dir que es diu que un algorisme és precís si i només si s'atura amb la sortida adequada per a cada instància d'entrada.



NECESSITAT DELS ALGORISMES:

Els algorismes s'utilitzen per resoldre problemes o automatitzar tasques de manera sistemàtica i eficient. Són un conjunt d'instruccions o regles que guien l'ordinador o el programari en la realització d'una tasca concreta o la resolució d'un problema.

modulació d'amplitud

Hi ha diverses raons per les quals utilitzem algorismes:



    Eficiència: els algorismes poden realitzar tasques de manera ràpida i precisa, cosa que els converteix en una eina essencial per a tasques que requereixen molts càlculs o processament de dades. Coherència: els algorismes són repetibles i produeixen resultats consistents cada vegada que s'executen. Això és important quan es tracten grans quantitats de dades o processos complexos. Escalabilitat: els algorismes es poden escalar per gestionar grans conjunts de dades o problemes complexos, cosa que els fa útils per a aplicacions que requereixen processar grans volums de dades. Automatització: els algorismes poden automatitzar tasques repetitives, reduint la necessitat d'intervenció humana i alliberant temps per a altres tasques. Estandardització: els algorismes es poden estandarditzar i compartir entre diferents equips o organitzacions, facilitant la col·laboració i l'intercanvi de coneixements.

En general, els algorismes són una eina essencial per resoldre problemes en diversos camps, com ara informàtica, enginyeria, anàlisi de dades, finances i molts altres.

Exemple:

Penseu en una caixa on ningú pot veure què passa dins, diem una caixa negra.

Donem entrada a la caixa i ens dóna la sortida que necessitem, però el procediment que podríem haver de conèixer darrere de la conversió de l'entrada a la sortida desitjada és un ALGORITME.



Un algorisme és independent del llenguatge utilitzat. Indica al programador la lògica utilitzada per resoldre el problema. Per tant, és un procediment lògic pas a pas que actua com a model per als programadors.

Exemples de la vida real que defineixen l'ús d'algorismes:

  • Penseu en un rellotge. Sabem que el rellotge avança, però com estableix el fabricant aquestes femelles i cargols perquè continuï movent-se cada 60 segons, la mà del minut s'hauria de moure i cada 60 minuts, la mà de les hores s'hauria de moure? Per tant, per resoldre aquest problema, hi ha d'haver un algorisme darrere.
  • Heu vist algú cuinant el vostre menjar preferit? És necessària la recepta per a això? Sí, és necessari ja que una recepta és un procediment seqüencial que converteix una patata crua en una patata freda. Això és el que és un algorisme: seguir un procediment per obtenir la sortida desitjada. Cal seguir la seqüència? Sí, la seqüència és el més important que s'ha de seguir per aconseguir el que volem.

Tipus d'algorismes:

  • Algoritmes d'ordenació: Ordenació de bombolles, ordenació per inserció i molts més. Aquests algorismes s'utilitzen per ordenar les dades en un format determinat.
  • Algoritmes de cerca: Cerca lineal, cerca binària, etc. Aquests algorismes s'utilitzen per trobar un valor o registre que demana l'usuari.
  • Algorismes gràfics : s'utilitza per trobar solucions a problemes com trobar el camí més curt entre ciutats i problemes de la vida real, com ara problemes de venedors ambulants.

Algorismes d'ordenació són algorismes que prenen una col·lecció d'elements i els reorganitzen en un ordre determinat (p. ex., ascendent o descendent). Hi ha molts algorismes de classificació diferents, cadascun amb els seus propis punts forts i febles. Alguns dels algorismes d'ordenació més utilitzats inclouen:

Classificació de bombolles: Un algorisme d'ordenació senzill que recorre la llista repetidament, compara elements adjacents i els intercanvia si estan en l'ordre incorrecte.

Ordenació d'inserció: Un algorisme d'ordenació senzill que crea la matriu ordenada final un element a la vegada, comparant cada element nou amb els elements que ja s'han ordenat i inserint-lo a la posició correcta.

Ordenació de la selecció: Un algorisme d'ordenació senzill que selecciona repetidament l'element mínim de la part no ordenada de la matriu i el mou al final de la part ordenada.

Ordenació de combinació: Un algorisme d'ordenació dividida i conquerida que funciona dividint la llista no ordenada en n subllistes, ordenant cada subllista i després fusionant-les de nou en una única llista ordenada.

Classificació ràpida: Un algorisme d'ordenació de dividir i conquerir que funciona seleccionant un element pivot de la matriu i particionant els altres elements en dues submatrius, segons si són menors o més grans que el pivot. Les submatrius s'ordenen de forma recursiva.

Cadascun d'aquests algorismes té diferents complexitats temporals i espacials, cosa que fa que alguns siguin més adequats per a determinats casos d'ús que per a altres.

Els algorismes de cerca són algorismes que cerquen un element o valor concret en una estructura de dades (com ara una matriu o una llista enllaçada). Alguns dels algorismes de cerca més utilitzats inclouen:

Cerca lineal: Un algorisme de cerca senzill que itera cada element d'una llista fins que troba una coincidència.

Cerca binària: Un algorisme de cerca que funciona dividint una llista ordenada per la meitat repetidament, fins que es troba l'element desitjat o es pot determinar que l'element no està present.

Saltar de cerca: Un algorisme de cerca que funciona avançant per passos fixos a la llista, fins que es troba un candidat adequat, i després realitzant una cerca lineal als elements circumdants.

Cerca per interpolació : un algorisme de cerca que funciona utilitzant informació sobre l'interval de valors de la llista per estimar la posició de l'element desitjat i després verificar que està realment present.

Cerca de taula hash: Un algorisme de cerca que utilitza una funció hash per assignar elements als índexs d'una matriu i, a continuació, realitza cerques en temps constant a la matriu per trobar l'element desitjat.

Cadascun d'aquests algorismes té diferents complexitats temporals i espacials, cosa que fa que alguns siguin més adequats per a determinats casos d'ús que per a altres. L'elecció de quin algorisme utilitzar depèn dels requisits específics del problema, com ara la mida de l'estructura de dades, la distribució de valors i la complexitat temporal desitjada.

Els algorismes de gràfics són un conjunt d'algorismes que s'utilitzen per processar, analitzar i comprendre estructures de dades de gràfics. Els gràfics són estructures matemàtiques utilitzades per modelar les relacions entre objectes, on els objectes es representen com a vèrtexs (o nodes) i les relacions entre ells es representen com a arestes. Els algorismes de gràfics s'utilitzen en una varietat d'aplicacions com ara anàlisi de xarxes, anàlisi de xarxes socials, sistemes de recomanació i en moltes altres àrees on la comprensió de les relacions entre objectes és important. Alguns dels algorismes de gràfics comuns inclouen:

Algoritmes del camí més curt (p. ex., Dijkstra's, Bellman-Ford, A*)
Algoritmes de Spanning Tree mínims (p. ex. Kruskal, Prim)
Algorismes de flux màxim (per exemple, Ford-Fulkerson, Edmonds-Karp)
Algoritmes de flux de xarxa (p. ex., concordança bipartida)
Algoritmes de connectivitat (p. ex., cerca en profunditat, cerca en profunditat)

Per què fem servir algorismes?

Penseu en dos nens, Aman i Rohan, resolent el cub de Rubik. Aman sap com resoldre'l en un nombre definit de passos. D'altra banda, Rohan sap que ho farà però no coneix el procediment. L'Aman resol el cub en 2 minuts, mentre que en Rohan encara està encallat i, al final del dia, d'alguna manera va aconseguir resoldre'l (pot haver fet trampes ja que el procediment és necessari).

Així doncs, el temps necessari per resoldre amb un procediment/algorisme és molt més efectiu que el sense cap procediment. Per tant, la necessitat d'un algorisme és imprescindible.

Pel que fa a dissenyar una solució a un problema informàtic, els ordinadors són ràpids però no infinitament ràpids. La memòria pot ser barata però no gratuïta. Així, doncs, el temps de càlcul és un recurs limitat i també ho és l'espai de la memòria. Per tant, hauríem d'utilitzar aquests recursos amb prudència i uns algorismes eficients en termes de temps i espai us ajudaran a fer-ho.

it és

Creació d'un algorisme:

Com que l'algorisme és independent del llenguatge, escrivim els passos per demostrar la lògica darrere de la solució que s'utilitzarà per resoldre un problema. Però abans d'escriure un algorisme, tingueu en compte els punts següents:

  • L'algorisme ha de ser clar i inequívoc.
  • Hi hauria d'haver 0 o més entrades ben definides en un algorisme.
  • Un algorisme ha de produir una o més sortides ben definides que siguin equivalents a la sortida desitjada. Després d'un nombre específic de passos, els algorismes s'han d'aturar.
  • Algorismes s'ha d'aturar o acabar després d'un nombre finit de passos.
  • En un algorisme, s'han de proporcionar instruccions pas a pas i han de ser independents de qualsevol codi informàtic.

Exemple: algorisme per multiplicar 2 nombres i imprimir el resultat:

Pas 1: Començar
Pas 2: Adquirir el coneixement de l'entrada. Aquí necessitem 3 variables; a i b seran l'entrada de l'usuari i c mantindrà el resultat.
Pas 3: Declarar variables a, b, c.
Pas 4: Prengui l'entrada per a les variables a i b de l'usuari.
Pas 5: Conèixer el problema i trobar la solució utilitzant operadors, estructures de dades i lògica

Hem de multiplicar les variables a i b de manera que utilitzem l'operador * i assignem el resultat a c.
És a dir c <- a * b

Pas 6: Comproveu com donar sortida, aquí hem d'imprimir la sortida. Així que escriviu print c
Pas 7: Final

Exemple 1: Escriu un algorisme per trobar el màxim de tots els elements presents a la matriu.
Seguiu l'enfocament de l'algorisme de la següent manera:

Pas 1: Inicieu el Programa
Pas 2: Declara una variable max amb el valor del primer element de la matriu.
Pas 3: Compareu el màxim amb altres elements mitjançant bucle.
Pas 4: Si màx Pas 5: Si no queda cap element, torneu o imprimiu el màxim, en cas contrari aneu al pas 3.
Pas 6: Final de la solució

Exemple 2: Escriu un algorisme per trobar la mitjana de 3 subjectes.
Seguiu l'enfocament de l'algorisme de la següent manera:

Pas 1: Inicieu el Programa
Pas 2: Declarar i llegir 3 Assumpte, diguem-ne S1, S2, S3
Pas 3: Calculeu la suma de tots els 3 valors del subjecte i emmagatzemeu el resultat a la variable Sum (Suma = S1+S2+S3)
Pas 4: Dividiu Suma per 3 i assigneu-la a la variable Mitjana. (Mitjana = Suma/3)
Pas 5: Imprimeix el valor de Mitjana de 3 assignatures
Pas 6: Final de la solució

Coneix la complexitat de l'algoritme:

La complexitat dels algorismes fa referència a la quantitat de recursos (com el temps o la memòria) necessaris per resoldre un problema o realitzar una tasca. La mesura més comuna de la complexitat és la complexitat del temps, que es refereix a la quantitat de temps que triga un algorisme a produir un resultat en funció de la mida de l'entrada. La complexitat de la memòria es refereix a la quantitat de memòria utilitzada per un algorisme. Els dissenyadors d'algoritmes s'esforcen per desenvolupar algorismes amb el menor temps possible i complexitats de memòria, ja que això els fa més eficients i escalables.

La complexitat d'un algorisme és una funció que descriu l'eficiència de l'algorisme en termes de la quantitat de dades que l'algorisme ha de processar.

Normalment hi ha unitats naturals per al domini i l'abast d'aquesta funció.

S'analitza un algorisme mitjançant la complexitat temporal i la complexitat espacial. Escriure un algorisme eficient ajuda a consumir el mínim temps per processar la lògica. Per a l'algorisme A, es jutja sobre la base de dos paràmetres per a una entrada de mida n:

  • Complexitat temporal: Temps que triga l'algorisme a resoldre el problema. Es mesura calculant la iteració de bucles, el nombre de comparacions, etc.
  • La complexitat temporal és una funció que descriu la quantitat de temps que triga un algorisme en termes de la quantitat d'entrada a l'algorisme.
  • El temps pot significar el nombre d'accessos a la memòria realitzats, el nombre de comparacions entre nombres enters, el nombre de vegades que s'executa algun bucle intern o alguna altra unitat natural relacionada amb la quantitat de temps real que trigarà l'algorisme.
  • Complexitat espacial: Espai ocupat per l'algorisme per resoldre el problema. Inclou l'espai utilitzat per les variables d'entrada necessàries i qualsevol espai addicional (excepte l'espai ocupat per les entrades) que utilitza l'algorisme. Per exemple, si fem servir una taula hash (una mena d'estructura de dades), necessitem una matriu per emmagatzemar els valors
  • aquest és un espai addicional ocupat, per tant comptarà per a la complexitat espacial de l'algorisme. Aquest espai addicional es coneix com a espai auxiliar.
  • La complexitat espacial és una funció que descriu la quantitat de memòria (espai) que pren un algorisme en termes de la quantitat d'entrada a l'algorisme.
  • La complexitat de l'espai de vegades s'ignora perquè l'espai utilitzat és mínim i/o evident, però de vegades es converteix en un problema com el temps.

.La complexitat temporal de les operacions:

  • L'elecció de l'estructura de dades s'ha de basar en la complexitat temporal de les operacions que es realitzaran.
  • La complexitat del temps es defineix en termes de quantes vegades es necessita per executar un algorisme determinat, en funció de la durada de l'entrada.
  • La complexitat temporal d'un algorisme és la quantitat de temps que triga a completar cada enunciat. Depèn molt de la mida de les dades processades.
  • Per exemple, si necessiteu fer cerques amb freqüència, hauríeu d'utilitzar un arbre de cerca binari.

.La complexitat espacial de les operacions:

  • L'elecció de l'estructura de dades s'ha de basar en la complexitat espacial de les operacions que es realitzaran.
  • La quantitat de memòria utilitzada per un programa per executar-lo es representa per la seva complexitat espacial.
  • Com que un programa requereix memòria per emmagatzemar dades d'entrada i valors temporals mentre s'executa, la complexitat de l'espai és auxiliar i espai d'entrada.
  • Per exemple, si necessiteu emmagatzemar moltes dades, hauríeu d'utilitzar una matriu.

casos en complexitat:

Hi ha dos casos de complexitat estudiats habitualment en algorismes:

sistema de fitxers linux

1. Complexitat del millor cas: El millor dels casos per a un algorisme és l'escenari en què l'algoritme realitza la quantitat mínima de treball (per exemple, triga el menor temps, utilitza la menor quantitat de memòria, etc.).

2. Complexitat del pitjor cas: El pitjor dels casos per a un algorisme és l'escenari en què l'algoritme realitza la màxima quantitat de treball (per exemple, triga el temps més llarg, utilitza la major quantitat de memòria, etc.).

En analitzar la complexitat d'un algorisme, sovint és més informatiu estudiar el pitjor dels casos, ja que això proporciona un límit superior garantit sobre el rendiment de l'algorisme. De vegades es realitza l'anàlisi del millor escenari, però generalment és menys important, ja que proporciona un límit inferior que sovint és trivial d'aconseguir.

Avantatges dels algorismes

  • Fàcil d'entendre: Com que és una representació gradual d'una solució a un problema determinat, és fàcil d'entendre.
  • Independent de la llengua: No depèn de cap llenguatge de programació, de manera que qualsevol pot entendre-ho fàcilment.
  • Depuració / Troba d'errors: Cada pas és independent / en un flux, de manera que serà fàcil detectar i corregir l'error.
  • Subproblemes: Està escrit en un flux, de manera que ara el programador pot dividir les tasques, cosa que les fa més fàcils de codificar.

Inconvenients dels algorismes

  • Crear algorismes eficients requereix molt de temps i requereix bones habilitats lògiques.
  • Desagradable mostrar ramificacions i bucles en algorismes.