Mi az algoritmus?
Ez egy szabályok / utasítások sorozata, amelyeket felvázolunk, mielőtt bármilyen konkrét probléma megoldására felállnánk a garanciát a probléma megoldására. Vegyünk például egy vasúti kapu-pontot.
Az algoritmusnak:
- Megfelelően definiált és jól elrendezett - Az algoritmusban szereplő utasításoknak érthetőnek és jól definiáltaknak kell lenniük.
- Végezzen egyértelmű műveleteket, azaz az algoritmus egyes lépéseinek elég egyszerűnek kell lenniük, hogy szükségtelenné váljon további egyszerűsítés
- Végezzen hatékonyan kiszámítható műveletet.
Képforrás : d262ilb51hltx0.cloudfront.net/
Az algoritmus megértése
Képforrás: goo.gl/images/u76bFe
Van egy érzékelő, amely érzékeli a vonat érkezését, amelynek kimenete 2 eredmény lehet
- Megérkezik a vonat
- A vonat nem érkezik
Az első eredmény eredményét átadják egy akciónak, amelyben azt tanácsolja, hogy zárják be a kapukat, míg a második eredmény eredményét ismét teszteljék azáltal, hogy elküldik az eredeti nyilatkozathoz. Ezenkívül az első feltétel eredményeként fellépő műveletet tesztelésre teszik annak ellenőrzésére, hogy a vonat teljesen elindult-e. Ha a válasz igen, akkor a kapuk nyitva vannak, míg negatív esetén a kapuk zárva maradnak. Ezt részletesebben megvitatjuk, és a következő témákkal dolgozunk (Alcsoportok / Építőelemek és egy algoritmus működése)
Hogyan könnyíti meg az algoritmus a munkát?
Mint tudjuk, ez egy problémamegoldási terv. Nos, ha nincs tervünk, akkor egy komplex probléma megoldására irányuló megközelítésünk az első kísérlet során valószínűleg kudarcot vall, és még ha megoldja is a problémát, nagyon valószínű, hogy ez a probléma optimális megoldása lesz.
Másrészt, ha bármilyen probléma megoldása előtt létrehozunk algoritmust, mondjuk, hogy kevés algoritmust készítünk és rendezünk az általuk nyújtott optimális megoldás alapján, ez garantálná az adott probléma megoldását. Ez az oka annak, hogy mindenütt, bármilyen probléma megoldása előtt, először létrejön egy algoritmus.
Legnépszerűbb algoritmusfejlesztő cégek
Egy nagyszerű termék elkészítéséhez igazán jó formatervezés szükséges, noha nem hasonlíthatunk össze algoritmust két különféle probléma megoldására, és megtehetjük azon társaságok nevét, amelyek kiváló termékeket szállítottak a világba a 21. század folyamán:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- walesi
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babilon
- Intel
- Flatiron Health
- Megerősít
- újgazdag
- AI elem
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Forrás: algorithmxlab.com/
Alkészletek / építőelemek és egy algoritmus működése
Ezekben az években bebizonyosodott, hogy az algoritmus mindössze három építőelemből megtervezhető:
- Sorrend
- Kiválasztás
- Ismétlés
Képforrás : https://goo.gl/
A sorozat olyan utasítások sorozata, amelyeket be kell tartani a probléma megoldása érdekében, és az utasításokat sorrendben kell végrehajtani.
Példák
1. Két szám hozzáadása
1. lépés: Start
2. lépés: Szerezzen be két számot bemenetként, és tárolja egy változóban, mint a és b
3. lépés: Adja hozzá az a & b számot, és tárolja a c változóban
4. lépés: Nyomtatás c
5. lépés: Állj meg.
A kiválasztás olyan program, amely lehetővé teszi számunkra, hogy kiválassza a különféle műveleteket. Amint azt korábban láttuk a vasúti kapu példájában, volt egy feltételes doboz, ahol ellenőriztük, hogy érkezik-e a vonat.
2. Keresse meg a 2 szám közül a legnagyobbat
1. lépés: Start
2. lépés: Szerezzen be két számot bemenetként, és tárolja egy változóban, mint a és b
3. lépés: Ha a nagyobb, mint b, akkor
4. lépés: A nyomtatás nagy
5. lépés: egyébként
6. lépés: A b nyomtatás nagy
7. hét: Állj le
Az ismétlés vagy iteráció vagy hurok azok a kisebb programok, amelyeket többször futtatnak, amíg a feltétel teljesül.
3. Ha szeretnénk kiszámítani egy szám faktorialitását
1. lépés : Indítsa el
2. lépés : Nyilatkozzon az n, a tényező és az i változókra
3. lépés : Inicializálja a változókat, azaz faktorialß1 és iß1
4. lépés: Olvassa le az n értékét
5. lépés: Ismételje meg a lépéseket, amíg n nem ismétlődik
faktorialis <- faktorialis * i
i <- i + 1
6. lépés: A tényező megjelenítése
7. lépés: Állj meg
Mit lehet tenni egy algoritmussal?
Ez egy funkció vagy funkciósorozat, amely megoldja a problémát. Használhatunk algoritmust a világ legegyszerűbb problémájának, valamint a legnehezebb problémák megoldásához. Úgy döntjük, hogy ez az optimális az „időbonyolultság” segítségével. Egyszerűen fogalmazva, az időbonyolultság leírja az adott algoritmus futási idejét. Van minimális futási idő (kis „O” -nak nevezve), átlagos futási idő és legrosszabb esetben az O (N) futási idő (más néven nagy „O”). A számítógépes tudósok és a szoftvermérnökök szeretik az algoritmusokat gondolkodni, mert érdekli a bevált gyakorlatok gyűjteményének kiértékelése és összeállítása, hogy ne kelljen a semmiből indulniuk a hasonló problémák minden egyes példányánál. Az alábbiakban bemutatunk egy példát a különböző időbeli összetettségekre, amelyek az adott probléma megoldásakor előfordulhatnak. Ez azt is jelenti, hogy egy problémára többféle megoldás lehet, de az algoritmusok időbonyolultságának kiszámításával ki kell választani a legoptimálisabbat. Interjúkban felkérik a problémát, majd optimalizálják azt, azaz hogy csökkentsék az algoritmus futási idejét. Lehet, hogy például írt kódot 2 „for” hurokkal (iteráció), de előfordulhat, hogy a feladatot egyetlen „for” hurok (iteráció) használatával lehet elérni, de még nem bírta ezt a megoldást. mégis, és még többet kell kitalálnia!
Képforrás: https://goo.gl/
Az algoritmus előnyei
- Ez egy adott probléma megoldásának fokozatos ábrázolása, amely megkönnyíti a megértést.
- Meghatározott eljárást alkalmaz.
- A programozási nyelvektől független, így bárki számára könnyen érthető, még programozási ismeretek nélkül.
- Minden lépésnek megvan a saját logikai sorrendje, ennélfogva könnyű hibakeresni.
- Az algoritmus használatával a problémát kisebb részekre vagy lépésekre bontja, így a programozónak könnyebb konvertálni azt egy aktuális programmá.
Szükséges készségek
A robusztus és a legjobb időbonyolultságú algoritmus megtervezéséhez jó logikai gondolkodással, jó matematikával és legalább egy objektum-orientált programozási nyelvvel kell rendelkeznie. Az adatszerkezet ismeretére is szükség van.
- Számítógépek - Tudjon meg többet a tömbökről, a kapcsolódó listákról, bináris fákról, kivonat táblázatokról, grafikonokról, halmokról, sorokról, halomról és más alapvető adatszerkezetekről.
- Matematika - Ismerje meg a halmazelméletet, a véges állapotú gépeket, a reguláris kifejezéseket, a mátrix szorzását, bitmenetes műveleteket, a lineáris egyenletek megoldását és más fontos fogalmakat, például permutációkat, kombinációkat, galamblyuk elvét.
- Big-O és Runtime - Tudja meg, mi a Big-O és hogyan kell elemezni az algoritmusok futási idejét.
Miért kell használni, és miért van szükségünk algoritmusra?
Az algoritmust kell használni, mivel ez megkönnyíti a munkánkat, és a legoptimálisabb megoldást kínálja. Ha valamely komplex probléma megoldása előtt nem alkalmazunk algoritmust, akkor nagy a esélye, hogy megoldás szempontjából irányt veszünk. Az algoritmussal időt takarítunk meg a problémamegoldásban, és biztosítjuk a megoldási algoritmus optimális működését, amint azt korábban már említettük, bármilyen programozási nyelven független, így bárki megtervezhet egy algoritmust, de egy igazán jó algoritmus megtervezése érdekében jó logika és matematika. Ez egy megoldás prototípusaként szolgál.
Képzelje el például, hogy előttünk van két Rubik-kocka. Az egyikben algoritmusokat használhat (például hányszor vagy milyen irányba kell fordítani az arcot), a másikban meg kell találnia a saját útját. Melyik út lesz gyorsabb? Természetesen ez lesz az első.
Vegyünk egy érdekes példát:
Tegyük fel, hogy van egy sor elem, és szeretnénk őket növekvő sorrendbe rendezni. Most ehhez egy másik algoritmikus megközelítés létezik. Kettőjük időbeli összetettségére fogunk összpontosítani: Beszúrási és Összevonási rendezés
Beszúrási rendezés: A beszúrási rendezés egy egyszerű rendezés.
(Az idő komplexitása O (N 2).)
Merge sort: Az merge sortípusban az Elemeket Osztás és Hódítás módszerrel rendezzük.
Az idő bonyolultsága O (N log N).
Ez lehet a hatás, amelyet akkor tapasztalhat, ha nem követ egy, és nem végez elemzést rajta.
Algoritmus hatálya
Az algoritmus megtanulásával és elsajátításával ismeri a „Problémamegoldás” művészetét. A helyes gyakorlat és a folyamatos tanulás révén képesnek kell lennie komplex problémák megoldására. Ez egy szoftver vagy kód megtervezésének alapja, mivel a kód futási ideje az egyik legfontosabb tényező egy adott feladat végrehajtásának meghatározásában. A világ olyan technikai óriásai, mint a Google és a Facebook megítélik a problémamegoldó készségeket, és az interjúk során a legtöbb kérdés algoritmus-tervezéssel és problémamegoldással kapcsolatos. Felkérjük Önt, hogy dolgozzon ki egy algoritmust, és optimalizálja azt a lehető legjobb bonyolultsági időhöz.
Néhány pont:
- Ez javítja a problémamegoldó képességeit, és ezáltal jobban versenyezhet interjúk vagy online vizsgák során
- Csökkenti az időt bármilyen probléma megoldásában.
- Szinte minden technológiai óriás jobban problémamegoldó képessége alapján bérel fel jelölteket
- A programozási nyelv a legtöbbet hozhatja ki, ha megtanulja, hogyan kell felépíteni és megtervezni egy algoritmust
Ki a megfelelő közönség az algoritmus technológiák tanulásához?
Számítástechnika szempontjából mindenkinek, aki kevés vagy több programozással rendelkezik, meg kell tanulnia az algoritmusokat. Ha olyan kódot ír, amely nem oldja meg a problémát, vagy ha megoldja a problémát, de nem hatékonyan használja az erőforrásokat (például hosszú idő fut, vagy túl sok a számítógép memóriája), akkor a kód nem az optimális . De a vállalatok azt akarják, hogy szoftverük vagy termékeik a lehető legrövidebb időn belül reagáljanak vagy hajtsák végre azokat.
A végtermék optimális működésének biztosítása érdekében mindenkinek, aki valamit fejleszti, meg kell tanulnia, hogyan kell elemezni egy algoritmust.
Hogyan segít az algoritmus a karrier növekedésében?
Az algoritmus megtervezése és elemzése nem szerepe (specifikus), de a munkájának része, és ez a rész létfontosságú szerepet játszik a kódfejlesztésben. Ha jó algoritmust dolgoz ki, akkor jó kódot fog írni egy optimális megoldással, és végül az ügyfeleknek szállított végtermék kitűnő. Tehát ha szoftvert tervez és / vagy fejlesztsz, akkor nélkülözhetetlen az adatok ismerete és tapasztalata az adatszerkezetekkel és az algoritmusokkal kapcsolatban. Tegyük fel, hogy egy szoftverfejlesztési terméknél dolgozik, annak válaszát alaposan ki kell vizsgálni (természetesen ellenőrizni szeretné a folyamat futási idejét, mielőtt a kódot átadná a Szoftvertesztelő csapatnak), és ez nem valami, amit megtehetsz kitalálni szinte pontosan előre, de az idő bonyolultságának kiszámításához használnia kell egy algoritmus elemzését.
Következtetés
Tehát, amint láttuk az algoritmusok bevezető leírását és annak különféle aspektusait, és láttuk, hogy különböző megközelítések létezhetnek egy adott probléma megoldására, és a Big-O és az idő bonyolultsága a paraméterek, amelyek segítenek kiválasztani a legoptimálisabb megoldást. Nagyszámú algoritmus feltárásával alapvetően erőteljesvé válhat az algoritmus elemzésében, és képesnek kell lennie arra, hogy egyszerűen megtervezze és futtassa az algoritmusokat.
Ajánlott cikkek
Ez egy útmutató az Mi az algoritmus. Itt az algoritmusok működését példákkal és annak különféle szempontjaival tárgyaltuk. A további javasolt cikkeken keresztül további információkat is megtudhat -
- Mi az a Tableau Server?
- Útmutató a nagy adatok elemzéséhez
- Mi az SQL Developer?
- Mi az Informatica?