Ny fahasarotan'ny algorithm dia miresaka loharano roa:
Time
(faharetan'ny famonoana) ary
toerana
(fampiasana fahatsiarovana). Raha ny fahasarotan'ny fotoana dia mandrefy ny fitomboan'ny fotoana fandehanana miaraka amin'ny haben'ny fampidirana (
n
), ny fahasarotan'ny habaka dia manombana ny fanjifana fahatsiarovana. Ohatra:
- Algorithm miaraka amin'ny
O(n)
Ny fahasarotan'ny fotoana dia mizana mibaribary miaraka amin'ny haben'ny fidirana.
- Algorithm miaraka amin'ny
O(1)
Ny fahasarotan'ny habaka dia mampiasa fitadidiana tsy tapaka na inona na inona haben'ny fidirana.
Tena ilaina ireo metrika roa ireo. Ny algorithm haingana dia mety handany fitadidiana amin'ny angona lehibe, raha toa kosa ny algorithm mahomby amin'ny fitadidiana dia mety ho miadana loatra amin'ny fampiharana amin'ny fotoana tena izy.
Ny fahombiazana dia mamaritra ny fahafaha-manao. Eritrereto ny manara-maso ny lisitry ny singa 10 mifanohitra amin'ny 10 tapitrisa:
- A
karazana bubble
(
O(n)
) dia mety ho ampy ho an'ny angona kely fa lasa tsy azo ampiharina ho an'ny lehibe.
- A
manambatra karazana
(
O (n log n)
) mitantana angon-drakitra lehibe kokoa nefa mila fitadidiana fanampiny.
Ny famakafakana ny fahasarotana dia manome fiteny iraisan'ny rehetra mba hampitahana ny algorithm, manala ny antsipirian'ny hardware. Izy io dia manome hery ny mpandrindra mba haminavina ny fihoaram-pefy sy hisorohana ny tsy fahampian-tsakafo amin'ny rafitra mitsikera.
Ny fanamarihana asymptotic dia manoritsoritra ny fitondran-tena mametra ny fiasa, manolotra fanafohezana ho an'ny fahasarotana. Ireo fanamarihana telo voalohany dia:
Ny fanamarihana Big O dia mamaritra ny fotoana na habaka ambony indrindra horaisin'ny algorithm. Ohatra:
-
O(1)
: Fotoana tsy miova (oh: fidirana amina singa iray amin'ny fanondro).
-
O(n)
a
-
O(n)
: Fotoana efamira (ohatra, tadivavarana mivolombolamena).
Big O no metrika fampiasa matetika indrindra, satria miantoka ny valin-drihana.
Omega dia mamaritra ny fotoana kely indrindra ilaina. Ohatra:
- Misy fikarohana tsipika misy
(1)
raha ny tanjona no singa voalohany.
Na dia be fanantenana aza, ny famakafakana toe-javatra tsara indrindra dia tsy dia misy fampahalalana firy momba ny drafitra tranga ratsy indrindra.
Ny Theta dia manambatra ny Big O sy Omega, maneho ny fihetsika asymptotic marina. Raha toa ka mitovy ny algorithm tsara indrindra sy ratsy indrindra:
-
(n log n)
mihatra amin'ny fanakambanana karazana salan'isa sy toe-javatra ratsy indrindra.
Ireo fanamarihana ireo dia manala ny tsy miovaova sy ny teny ambany kokoa, mifantoka amin'ny tahan'ny fitomboana. Ohatra, 2n + 3n + 4 manatsotra ny O(n) satria ny teny quadratic dia manjaka amin'ny lehibe n .
Ny fahatakarana ny kilasy sarotra dia manampy amin'ny fanasokajiana ny algorithm amin'ny alàlan'ny scalability. Ity misy ambaratongam-pahefana manomboka amin'ny ankamaroany ka hatramin'ny kely indrindra:
Ny fotoana famonoana na ny fitadidiana dia tsy miova toy ny
n
mitombo.
-
OHATRA
: Fidirana amin'ny sandan'ny latabatra hash amin'ny alalan'ny fanalahidy.
Mitombo logaritma amin'ny
n
.
-
OHATRA
: Ny fikarohana mimari-droa dia manasasaka ny habaka fidirana isaky ny mandeha.
Mizana mifandanja amin'ny
n
.
-
OHATRA
: Fikarohana tsipika amin'ny alalan'ny lisitra tsy voasoroka.
Matetika amin'ny algorithm divide-and-conquer.
-
OHATRA
a
Ny famerimberenan'ny nested dia miteraka fitomboana mipoaka.
-
OHATRA
: Karazana miboiboika sy karazana fifantenana.
Mitombo avo roa heny ny fotoana fampandehanana isaky ny fampidirana fanampiny.
-
OHATRA
: Kajy Fibonacci miverimberina tsy misy fitadidiana.
Algorithm mifototra amin'ny permutation.
-
OHATRA
: Famahana ny olan'ny mpivarotra mandehandeha amin'ny alalan'ny herisetra.
Ny fahasamihafana eo amin'ny O (n log n) SY O(n) lasa mafy ho an'ny n = 10 : Ny voalohany dia mety ho vita ao anatin'ny milisegondra, fa ny faharoa kosa mety haharitra andro maromaro.
Ny algorithm dia miasa amin'ny fomba hafa mifototra amin'ny fanamafisana fampidirana. Ny famakafakana ny tranga rehetra dia miantoka ny fahamendrehana:
Mety hisafidy eo amin'ny fiaraha-mientana hash ( O(n + m) ) ary mitambatra loop ( O(nm) ) mifototra amin'ny fizarana angon-drakitra. Ny famakafakana tranga ratsy indrindra dia tena ilaina ho an'ny rafitra manakiana ny fiarovana (ohatra, rindrambaiko fiaramanidina), izay tsy azo ekena ny tsy ampoizina.
Ny olana mitovy dia azo vahana amin'ny alàlan'ny algorithm samihafa. Ohatra, ny olana amin'ny fitadiavana sanda kendrena amin'ny lisitry ny soatoavina dia azo vahana amin'ny alàlan'ny algorithm samihafa, toy ny fikarohana tsipika, fikarohana binary, na fikarohana tabilao hash.
Ny tabilao etsy ambany dia mampitaha ny fahasarotan'ny fotoana sy ny habaka amin'ireo algorithm ireo amin'ny fitadiavana sanda kendrena amin'ny lisitry ny n soatoavina.
Ny fisafidianana ny algorithm dia miankina amin'ny haben'ny olana, ny toetran'ny fidirana ary ny loharano misy. Ohatra, raha kely sy tsy voasokajy ny lisitra, dia mety ho safidy tsara indrindra ny fikarohana tsipika. Raha lehibe sy voalamina ny lisitra, ny fikarohana binary dia mety ho safidy tsara indrindra. Raha lehibe sy tsy voasokajy ny lisitra dia mety ho safidy tsara indrindra ny fikarohana latabatra hash.
Ny famakafakana amortized dia salan'isa ny fotoana mandritra ny filaharan'ny asa.
-
OHATRA
: Fizarana dinamika avo roa heny rehefa feno. Raha tokana
Atoseho
mety haharitra ny fandidiana
O(n)
amin'ny fotoana, ny vola amortized mijanona
O(1)
.
Algorithms toy ny
Monte Carlo
SY
Las Vegas
mampiasa randomness ho fahombiazana.
-
OHATRA
: Ny fitsapana voalohany amin'ny Miller-Rabin dia manana antoka azo antoka fa haingana kokoa noho ny fomba voafaritra.
Ny olana sasany (ohatra, ny fahafaham-po Boolean) dia NP-feno , midika izany fa tsy misy vahaolana polynomial-time fantatra. Ny fanaporofoana ny fahafenoan'ny NP amin'ny alàlan'ny fampihenana dia manampy amin'ny fanasokajiana ny hamafin'ny kajy.
ny O(n) Ny algorithm amin'ny clustering dia mety ho lasa sakana ho an'ny angon-drakitra be dia be, izay mahatonga ny fiovana amin'ny fomba mitovy toy ny hazo kd ( O (n log n) ).
Miankina amin'ny hamafin'ny O(2) olana (ohatra, faktiora integer) hanoherana ny fanafihana.
Ny maotera rendering amin'ny fotoana tena izy no laharam-pahamehana O(1) algorithm ho an'ny simulation fizika mba hihazonana 60+ FPS.
Zava-dehibe ny fifanakalozana:
-
Time vs. toerana
: Mampiasà sari-tany hash (
O(1)
lookups) amin'ny vidin'ny fitadidiana.
-
Fahatsorana vs. Optimality
: Karazana fampidirana (
O(n)
) mety ho tsara kokoa ho an'ny angon-drakitra kely saika voalahatra.
Ho an'ny algorithm recursive, ny fampandehanana modely fifandraisana miverimberina. Ohatra, manambatra karazana miverimberina:
[ T(n) = 2T(n/2) + O(n) ] dia manapa-kevitra ny
O (n log n)
via ny
Master Theorem
.
Ny fitsapana empirika dia mameno ny fanadihadiana teorika. Ny fitaovana fanaovana profiling (oh, Valgrind, perf) dia manambara ny tsy fahampian'ny tontolo iainana.
python
def linear_sum(arr):
total = 0
ho an'ny isa ao amin'ny arr:
total += num
miverina total
def quadratic_sum(arr):
total = 0
fa i arr:
ho j in arr:
total += i * j
miverina total
raha O(n) manala ny tsy miova, a 100n algorithm dia mety ho miadana kokoa noho ny a 0.01n algorithm ho an'ny pratika n .
ny O (n log n) algorithm dia mety ho tsy mahomby O(n) HO AN'NY n = 10 noho ny overhead.
Ny asa Fibonacci voatadidy ( O(n) space) dia mety hianjera amin'ny fampidirana lehibe, tsy toy ny dikan-teny miverimberina ( O(1) habakabaka).
BST mampifandanja ny tena ( O (log n) fikarohana) dia azo antoka kokoa noho ny BST mahazatra ( O(n) tranga ratsy indrindra) ho an'ny angona tsy azo itokisana.
Ny famakafakana ny fahasarotan'ny algorithm dia ny kompà mitarika ny mpamorona amin'ny tontolo midadasika amin'ny fahombiazan'ny kajy. Ho an'ny mpianatra MTSC7196, ny fifehezana ity taranja ity dia mampifandray ny fahalalana teorika sy ny fahaiza-manao azo ampiharina. Amin'ny alàlan'ny famongorana ny fepetra takian'ny fotoana sy ny habaka, ny fampitahana ny fetra asymptotic, ary ny fandehanana amin'ny fifanakalozam-barotra amin'izao tontolo izao, ny mpamorona dia afaka manamboatra rafitra izay mirefy tsara sy miasa azo antoka.
Ao anatin'ny vanim-potoana voafaritra amin'ny fanavaozana entin'ny data, ny fahaizana manavaka ny an O (n log n) ary an O(n) Ny vahaolana dia tsy akademika fotsiny fa ilaina stratejika. Rehefa mandroso amin'ny fianaranao ianao dia tsarovy: ny famakafakana sarotra dia tsy momba ny isa sy marika fotsiny. Momba ny fahatakarana ny fitempon'ny kajy mihitsy.
Nanomboka tamin'ny taona 2019, dia niorina tamin'ny firavaka tao Guangzhou, Shina, Base mpanamboatra firavaka. Izahay dia orinasa firavaka mampifangaro, famokarana sy famokarana.
+86-19924726359/+86-13431083798
Gorodona 13, tilikambo andrefana ao amin'ny tanàna hendry, No. 33 Juxin Street, Distrikan'i Haizhu, Guangzhou, Shina.