logo

Tutorial d'algorismes

Algoritme és un procediment pas a pas per resoldre un problema o realitzar una tasca. En el context d'estructures de dades i algorismes, és un conjunt d'instruccions ben definides per dur a terme una tasca computacional específica. Els algorismes són fonamentals per a la informàtica i tenen un paper molt important en el disseny de solucions eficients per a diversos problemes. Entendre els algorismes és essencial per a qualsevol persona interessada a dominar estructures i algorismes de dades.

Què és l'algoritme?



Taula de contingut

canvi de mètode java

Què és un algorisme?

An algorisme és una seqüència finita d'instruccions ben definides que es poden utilitzar per resoldre un problema computacional. Proporciona un procediment pas a pas que converteix una entrada en una sortida desitjada.

Com funcionen els algorismes?

Els algorismes solen seguir una estructura lògica:



  • Entrada: L'algorisme rep dades d'entrada.
  • Processament: L'algorisme realitza una sèrie d'operacions sobre les dades d'entrada.
  • Sortida: L'algorisme produeix la sortida desitjada.

Característiques d'un algorisme:

  • Clar i inequívoc: L'algorisme hauria de ser inequívoc. Cadascun dels seus passos ha de ser clar en tots els aspectes i només ha de conduir a un significat.
  • Entrades ben definides: Si un algorisme diu que cal prendre entrades, haurien de ser entrades ben definides. Pot o no prendre entrada.
  • Sortides ben definides: L'algorisme ha de definir clarament quina sortida es produirà i també ha d'estar ben definit. Ha de produir almenys 1 sortida.
  • Finitud: L'algorisme ha de ser finit, és a dir, ha d'acabar després d'un temps finit.
  • Viable: L'algorisme ha de ser senzill, genèric i pràctic, de manera que es pugui executar amb restriccions i recursos raonables.
  • Independent de la llengua: L'algoritme ha de ser independent de l'idioma, és a dir, ha de ser només instruccions senzilles que es puguin implementar en qualsevol idioma i, tanmateix, la sortida serà la mateixa, com s'esperava.

Quina és la necessitat dels algorismes?

Els algorismes són essencials per resoldre problemes computacionals complexos de manera eficient i eficaç. Proporcionen un enfocament sistemàtic de:

quants zeros hi ha 1.000 milions
  • Resolent problemes: Els algorismes divideixen els problemes en passos més petits i manejables.
  • Solucions d'optimització: Els algorismes troben les millors o gairebé les solucions òptimes als problemes.
  • Tasques d'automatització: Els algorismes poden automatitzar tasques repetitives o complexes, estalviant temps i esforç.

Exemples d'algorismes

A continuació es mostren alguns exemples d'algorismes:

  • Algoritmes d'ordenació: Ordenació combinada, Ordenació ràpida, Ordenació munt
  • Algoritmes de cerca: Cerca lineal, cerca binària, hashing
  • Algorismes gràfics: algorisme de Dijkstra, algorisme de Prim, algorisme de Floyd-Warshall
  • Algoritmes de concordança de cadenes: Algorisme de Knuth-Morris-Pratt, algorisme de Boyer-Moore

Com escriure un algorisme?

Per escriure un algorisme, seguiu aquests passos:



  • Definiu el problema: Expliqueu clarament el problema a resoldre.
  • Disseny de l'algorisme: Trieu un paradigma de disseny d'algoritmes adequat i desenvolupeu un procediment pas a pas.
  • Implementar l'algorisme: Tradueix l'algorisme a un llenguatge de programació.
  • Prova i depuració: Executeu l'algorisme amb diverses entrades per garantir la seva correcció i eficiència.
  • Analitza l'algorisme: Determineu la seva complexitat temporal i espacial i compareu-la amb algorismes alternatius.

Aprendre els conceptes bàsics dels algorismes

Anàlisi d'algorismes

  • Anàlisi asimptòtica
  • Casos pitjors, mitjans i millors
  • Notacions asimptòtiques
  • Teoria del límit inferior i superior
  • Introducció a l'anàlisi amortitzat
  • Què significa 'complexitat espacial'?
  • Esquema d'aproximació del temps polinomial
  • Mètode comptable | Anàlisi amortitzada
  • Mètode potencial en anàlisi amortitzat

Tipus d'algorismes

Els algorismes poden ser de diferents tipus, depenent del que facin i de com es fabriquen. Alguns tipus comuns són:

matriu java de cadena

1. Algorismes de cerca i ordenació

  • Introducció als algorismes de cerca
  • Introducció a l'algorisme d'ordenació
  • Algorismes d'ordenació estable i inestable
  • Límit inferior per als algorismes d'ordenació basats en comparacions
  • La complexitat del temps d'execució d'un algorisme d'ordenació basat en comparacions pot ser inferior a N logN?
  • Quin algorisme d'ordenació fa que el nombre mínim d'escriptures de memòria?

2. Algorismes cobdiciosos

3. Algoritmes de programació dinàmica

  • Introducció a la Programació Dinàmica
  • Propietat de subproblemes superposats
  • Propietat òptima de la subestructura
  • Subseqüència creixent més llarga
  • Subseqüència comuna més llarga
  • Ruta del cost mínim
  • Canvi de moneda
  • Multiplicació de cadena matricial
  • Problema de la motxilla 0-1
  • Subseqüència palindròmica més llarga
  • Partició de palíndrom

4. Algoritmes de cerca de patrons

  • Introducció a la cerca de patrons
  • Cerca de patrons ingenu
  • Algoritme KMP
  • Algoritme Rabin-Karp
  • Cerca de patrons utilitzant una prova de tots els sufixos
  • Algoritme Aho-Corasick per a la cerca de patrons
  • Algorisme Z (Algoritme de cerca de patrons de temps lineal)

5. Algoritme de retrocés

  • Introducció al backtracking
  • Imprimeix totes les permutacions d'una cadena determinada
  • El problema de la gira del cavaller
  • Rata en un laberint
  • Problema N Queen
  • Suma del subconjunt
  • m Problema per pintar
  • Cicle Hamiltonià
  • Sudoku

6. Algorisme Dividir i Conquerir

7. Algorisme geomètric

  • Introducció als algorismes geomètrics
  • Parell de punts més proper | O(nlogn) Implementació
  • Com comprovar si un punt donat es troba dins o fora d'un polígon?
  • Com comprovar si dos segments de línia donats es tallen?
  • Donats n segments de línia, descobreix si es tallen dos segments
  • Com comprovar si donats quatre punts formen un quadrat
  • Casc convex utilitzant l'algoritme o embolcall de Jarvis

8. Algorismes matemàtics

  • Introducció als algorismes matemàtics
  • Escriu un mètode eficient per comprovar si un nombre és múltiple de 3
  • Escriu un programa per sumar dos nombres en base 14
  • Programa per als nombres de Fibonacci
  • Mitjana d'un corrent de nombres
  • Multiplica dos nombres enters sense utilitzar operadors de multiplicació, divisió i bits, i sense bucles
  • Mètode babilònic d'arrel quadrada
  • Sedós d'Eratostenes
  • El triangle de Pascal
  • Donat un número, troba el següent palíndrom més petit
  • Programa per sumar dos polinomis
  • Multiplicar dos polinomis
  • Comptar els zeros al final del factorial d'un nombre

9. Algorismes per bits

  • Introducció als algorismes per bits
  • Little i Big Endian
  • Detectar signes contraris
  • Intercanviar bits
  • Apagueu el bit configurat més a la dreta
  • Girar bits
  • El següent nombre superior amb el mateix nombre de bits establerts
  • Intercanvia dos mordis en un byte

10. Algorismes gràfics

12. Algoritmes de ramificació i lligat

  • Branca i Lligat | Set 1 (Introducció amb motxilla 0/1)
  • Branca i Lligat | Set 2 (implementació de la motxilla 0/1)
  • Branca i Lligat | Set 3 (problema de 8 trencaclosques)
  • Branca i lligat | Set 4 (problema d'assignació de feina)
  • Branca i Lligat | Set 5 (problema N Queen)
  • Branca i lligat | Set 6 (problema del venedor viatger)

Proves:

  • Anàlisi d'algorismes
  • Classificació
  • Divideix i conquereix
  • Algorismes cobdiciosos
  • Programació dinàmica
  • Fes marxa enrere
  • NP completa
  • Buscant
  • Recursió
  • Algoritmes de bits