algoritmus
Kiejtés
- IPA: [ ˈɒlɡoritmuʃ]
Főnév
algoritmus
- (matematika, informatika, számításelmélet, algoritmusok) Az algoritmus egy probléma megoldására szolgáló, pontosan meghatározott lépések sorozata, amelyet egy gép (például számítógép) vagy ember követhet. Az algoritmusok az informatika és a matematika alapvető fogalmai közé tartoznak, és kulcsszerepet játszanak a programozásban, valamint a különböző problémák hatékony megoldásában.
Algoritmusok főbb jellemzői
- Végesség: Az algoritmus véges számú lépés után befejeződik.
- Egyértelműség: Az egyes lépések pontosan meghatározottak és félreérthetetlenek.
- Bemenet: Az algoritmus rendelkezhet bemeneti adatokkal, amelyek a probléma kezdeti állapotát reprezentálják.
- Kimenet: Az algoritmus legalább egy eredményt (kimenetet) ad vissza.
- Hatékonyság: Az algoritmusnak az adott erőforrások (idő és memória) szempontjából optimálisnak kell lennie.
Algoritmusok típusai
Lineáris algoritmusok
Olyan algoritmusok, amelyek egyenes vonalban, lépésről lépésre hajtják végre az utasításokat.
Példa: Egy számokból álló lista elemeinek összege.def osszeg(lista): osszeg = 0 for szam in lista: osszeg += szam return osszeg
Elágazó algoritmusok
Ezeknél az algoritmusoknál a végrehajtás iránya a feltételek teljesülésétől függ.
Példa: Egy szám pozitív, negatív vagy nulla.def szam_tipusa(szam): if szam > 0: return "Pozitív" elif szam < 0: return "Negatív" else: return "Nulla"
Ismétlődő algoritmusok (Iteráció)
Egy algoritmus bizonyos lépései ismétlődnek egy adott feltétel teljesüléséig.
Példa: Faktoriális számítása.def faktorialis(n): eredmeny = 1 for i in range(1, n + 1): eredmeny *= i return eredmeny
Rekurzív algoritmusok
Az algoritmus önmagát hívja meg egy kisebb részprobléma megoldására.
Példa: Fibonacci-számok kiszámítása.def fibonacci(n): if n <= 1: return n return fibonacci(n - 1) + fibonacci(n - 2)
Algoritmusok hatékonysága
Az algoritmusok hatékonyságát az alábbi szempontok alapján értékelhetjük:
- Időbonyolultság (Time Complexity):
Az algoritmus futásához szükséges idő a bemenet méretének függvényében. Az időbonyolultságot gyakran Big-O jelöléssel adjuk meg:
- (O(1)): Konstans idő.
- (O(n)): Lineáris idő.
- (O(n^2)): Négyzetes idő, például a buborékrendezés esetében.
- (O(n)): Logaritmikus idő, például bináris keresésnél.
- Térbonyolultság (Space Complexity):
Az algoritmus által elfoglalt memória mérete a bemenet nagyságának függvényében.
Példák különböző algoritmusokra
1. Rendezési algoritmusok
Ezek az algoritmusok egy lista elemeinek meghatározott sorrendbe állítására szolgálnak.
- Buborékrendezés (Bubble Sort):
Egyszerű, de nem túl hatékony algoritmus ((O(n^2))).
python def buborek_rendezes(lista): n = len(lista) for i in range(n): for j in range(0, n-i-1): if lista[j] > lista[j+1]: lista[j], lista[j+1] = lista[j+1], lista[j] return lista
- Gyorsrendezés (Quick Sort):
Hatékonyabb rendezési algoritmus ((O(n n)) átlagosan).
python def gyors_rendezes(lista): if len(lista) <= 1: return lista pivot = lista[len(lista) // 2] kisebb = [x for x in lista if x < pivot] egyenlo = [x for x in lista if x == pivot] nagyobb = [x for x in lista if x > pivot] return gyors_rendezes(kisebb) + egyenlo + gyors_rendezes(nagyobb)
2. Keresési algoritmusok
- Lineáris keresés
Egyszerű, de lassú algoritmus ((O(n))).
python def linearis_kereses(lista, cel): for i, elem in enumerate(lista): if elem == cel: return i return -1
- Bináris keresés
Hatékonyabb, ha a lista rendezett ((O(n))).
python def binaris_kereses(lista, cel): bal, jobb = 0, len(lista) - 1 while bal <= jobb: kozep = (bal + jobb) // 2 if lista[kozep] == cel: return kozep elif lista[kozep] < cel: bal = kozep + 1 else: jobb = kozep - 1 return -1
3. Graf-algoritmusok
- Dijkstra algoritmus
Rövid legútdetektálás egy csúcsról a gráfban.
python import heapq def dijkstra(graf, kezd): tavolsag = {csucs: float('inf') for csucs in graf} tavolsag[kezd] = 0 prioritas_sor = [(0, kezd)] while prioritas_sor: akt_tav, akt_csucs = heapq.heappop(prioritas_sor) if akt_tav > tavolsag[akt_csucs]: continue for szomszed, suly in graf[akt_csucs]: uj_tav = akt_tav + suly if uj_tav < tavolsag[szomszed]: tavolsag[szomszed] = uj_tav heapq.heappush(prioritas_sor, (uj_tav, szomszed)) return tavolsag
Etimológia
A perzsa al-Khwārizmī (الخَوَارِزْمِيّ (al-ḵawārizmiyy) névből.
Fordítások
- angol: algorithm (en)
- dán: algoritme (da)
- feröeri: algoritma (fo)
- német: Algorithmus (de) hn
- olasz: algoritmo (it) hn
- orosz: алгоритм (ru) (algoritm)
- román: algoritm (ro)
Lásd még
- algoritmus - Értelmező szótár (MEK)
- algoritmus - Etimológiai szótár (UMIL)
- algoritmus - Szótár.net (hu-hu)
- algoritmus - DeepL (hu-de)
- algoritmus - Яндекс (hu-ru)
- algoritmus - Google (hu-en)
- algoritmus - Helyesírási szótár (MTA)
- algoritmus - Wikidata
- algoritmus - Wikipédia (magyar)