Algorithm kuoma kunonyanya kugadzirisa maviri zviwanikwa:
nguva
(nguva yekuuraya) uye
nzvimbo
(kushandiswa kwendangariro). Nepo nguva yakaoma inoyera kuti nguva yekumhanya inokura sei nesaizi yekupinza (
n
), kuoma kwenzvimbo kunoongorora kushandiswa kwendangariro. Semuyenzaniso:
-Algorithm ine
O(n)
nguva yakaoma inoyera mutsara nehukuru hwekupinza.
-Algorithm ine
O(1)
kuoma kwenzvimbo kunoshandisa chiyeuchidzo chenguva dzose zvisinei nehukuru hwekupinza.
Ose metrics akakosha. Yekukurumidza algorithm inogona kupedza ndangariro pamaseti makuru, nepo memory-inoshanda algorithm inogona kunonoka kune chaiyo-nguva maapplication.
Kubudirira kunoraira kuitika. Funga kuronga runyoro rwezvinhu gumi maringe nemamiriyoni gumi:
- A
bubble sort
(
O(n)
) inogona kukwana kune madiki dataset asi zvisingaite kune makuru.
- A
merge sort
(
O(n log n)
) inobata maseti makuru nenyasha asi inoda imwe ndangariro.
Kuomarara kuongororwa kunopa mutauro wepasirese kuti uenzanise algorithms, kubvisa kure hardware-chaiyo ruzivo. Iyo inopa simba vanogadzira kufanotaura scalability uye kudzivirira mabhodhoro mumasisitimu akakosha.
Asymptotic notations inotsanangura maitiro ekudzikamisa emabasa, achipa shorthand yekuoma. Iwo matatu ekutanga notation ndiwo:
Big O notation inotsanangura iyo yakanyanya nguva kana nzvimbo iyo algorithm ichatora. Semuyenzaniso:
-
O(1)
: Nguva dzese (semuenzaniso, kuwana array element ne index).
-
O(n)
: Linear nguva (semuenzaniso, iterating kuburikidza nerondedzero).
-
O(n)
: Quadratic nguva (semuenzaniso, nested looops mu bubble sort).
Big O ndiyo inonyanya kushandiswa metric, sezvo ichivimbisa kuita sirin'i.
Omega inotsanangura nguva shoma inodiwa. Semuyenzaniso:
-Kutsvaga kwemutsara kune
(1)
kana chinangwa chiri chinhu chekutanga.
Kunyange paine tarisiro, ongororo yemhando yepamusoro haina ruzivo rwekuronga zvakanyanya.
Theta inosanganisa Big O uye Omega, inomiririra iyo chaiyo asymptotic maitiro. Kana algorithms yakanakisa uye yakaipisisa kesi dzakafanana:
-
(n log n)
inoshanda pakubatanidza marudzi avhareji uye akaipisisa-zviitiko.
Aya manotsi anobvisa zvimiro uye mazwi akaderera-odha, achitarisa pakukura kwekukura. Semuyenzaniso, 2n + 3n + 4 inorerutsa ku O(n) nokuti izwi requadratic rinotonga nokuda kukuru n .
Kunzwisisa kuomarara makirasi kunobatsira kurongedza algorithms ne scalability. Heino hierarchy kubva kune yakawanda kusvika kune isingashande:
Nguva yekuuraya kana ndangariro inoramba isina kuchinjika se
n
inokura.
-
Muenzaniso
: Kuwana kukosha kwetafura yehashi nekiyi.
Runtime inokura logarithmically ne
n
.
-
Muenzaniso
: Binary search inoisa hafu nzvimbo yekupinda pese pese.
Runtime inoyera yakaenzana ne
n
.
-
Muenzaniso
:Kutsvaga kwemutsara kuburikidza nerondedzero isina kurongwa.
Inowanikwa mu divide-and-conquer algorithms.
-
Muenzaniso
: Batanidza mhando uye murwi mhando.
Nested iterations inotungamira mukukura kunoputika.
-
Muenzaniso
: Bubble mhando uye sarudzo yemhando.
Runtime inopetwa nekamwe imwe neimwe yekuwedzera.
-
Muenzaniso
: Recursive Fibonacci kuverenga pasina memoization.
Permutation-based algorithms.
-
Muenzaniso
: Kugadzirisa dambudziko rekufamba mutengesi kuburikidza nehutsinye-simba.
Musiyano uripo O(n log n) uye O(n) inova yakaoma n = 10 : yekutanga inogona kuuraya mumamilliseconds, nepo yekupedzisira inogona kutora mazuva.
Algorithms inoita zvakasiyana zvichibva pane zvigadziriso zvekupinza. Kuongorora zviitiko zvese kunovimbisa kusimba:
A database query optimizer inogona kusarudza pakati pekujoinha hashi ( O(n + m) ) uye nested loop join ( O(nm) ) zvichibva pakugovera data. Kuongorora kwakaipisisa kwakakosha kune kuchengetedza-yakakosha masisitimu (semuenzaniso, aviation software), uko kusatarisika kusingagamuchirwe.
Dambudziko rimwechete rinogona kugadziriswa uchishandisa akasiyana algorithms. Semuenzaniso, dambudziko rekutsvaga kukosha kwechinangwa mune runyorwa rwehukoshi rinogona kugadziriswa uchishandisa akasiyana algorithms, senge linear search, binary search, kana hash tafura yekutsvaga.
Tafura iri pazasi inoenzanisa iyo nguva nenzvimbo yakaoma yeaya algorithms yekutsvaga kukosha kwechinangwa mune runyorwa rwe n values.
Sarudzo yealgorithm inoenderana nekukura kwedambudziko, maitiro ekuisa, uye zviwanikwa zviripo. Semuenzaniso, kana rondedzero iri diki uye isina kurongwa, mutsara kutsvaga kungave sarudzo yakanaka. Kana iyo rondedzero yakakura uye yakarongedzwa, bhinari yekutsvaga inogona kunge iri sarudzo yakanaka. Kana iyo rondedzero yakakura uye isina kurongedzwa, hash tafura yekutsvaga inogona kunge iri sarudzo yakanyanya kunaka.
Amortized ongororo inotora nguva pamusoro pekutevedzana kwemaitiro.
-
Muenzaniso
: Dynamic arrays yakapetwa kaviri kana yakazara. Ndichiri single
kusunda
oparesheni inogona kutora
O(n)
nguva, iyo amortized cost inoramba iripo
O(1)
.
Algorithms senge
Monte Carlo
uye
Las Vegas
shandisa zvisina tsarukano pakuita zvakanaka.
-
Muenzaniso
: Miller-Rabin primality bvunzo ine probabilistic garandi asi inokurumidza kupfuura deterministic nzira.
Mamwe matambudziko (semuenzaniso, Boolean satisfiability) ari NP-yakakwana , zvichireva kuti hapana inozivikanwa polynomial-nguva mhinduro iripo. Kuratidza NP-kukwana kuburikidza nekuderedza kunobatsira kuisa computational kuomarara.
An O(n) clustering algorithm inogona kuve bhodhoro remaseti makuru, zvichikurudzira shanduko kune dzakaita senge kd miti ( O(n log n) ).
Public-kiyi masisitimu anovimba nekuoma kwe O(2) matambudziko (semuenzaniso, integer factorization) kuramba kurwiswa.
Iyo chaiyo-nguva yekupa injini inotungamira O(1) algorithms efizikisi simulations kuchengetedza 60+ FPS.
Kutengeserana kunokosha:
-
Nguva vs. Nzvimbo
: Shandisa hashi mepu (
O(1)
lookups) nemutengo wekuyeuka.
-
Zviri nyore vs. Optimality
: Kuisa mhando (
O(n)
) inogona kudiwa kune madiki, anenge akarongwa dataset.
Kune inodzokororwa algorithms, kudzokorora hukama modhi yekumhanya. Semuenzaniso, kusanganisa mhando dzekudzokorora:
[ T(n) = 2T(n/2) + O(n) ] inotsidza kuti
O(n log n)
kuburikidza ne
Master Theorem
.
Empirical kuyedzwa kunozadzisa ongororo yedzidziso. Maturusi ekunyora (semuenzaniso, Valgrind, perf) anoratidza mabhodhoro chaiwo enyika.
python
def linear_sum(arr):
zvakazara = 0
ye num in arr:
zvachose += nhamba
return total
def quadratic_sum(arr):
zvakazara = 0
nekuti ndiri mur:
nokuti j mu ar:
zvachose += ini * j
return total
Apo O(n) abstracts kure constants, a 100n algorithm inogona kunonoka kupfuura a 0.01n algorithm yekuita n .
An O(n log n) algorithm inogona kusashanda zvakanaka O(n) nokuti n = 10 nekuda kwepamusoro.
A nemusoro Fibonacci basa ( O(n) space) inogona kurovera pane zvakakura, kusiyana neinodzokorora vhezheni ( O(1) nzvimbo).
A self-balancing BST ( O(log n) tsvaga) yakachengeteka pane yenguva dzose BST ( O(n) yakaipisisa) yedata risingavimbike.
Algorithm kuoma kwekuongorora ndiyo kambasi inotungamira vanogadzira kuburikidza neyakakura nzvimbo yekombuta inoshanda. Kune vadzidzi veMTSC7196, kugona chirango ichi mabhiriji ruzivo rwedzidziso uye hunyanzvi hunoshanda. Nekuparadzanisa zvinodiwa zvenguva nenzvimbo, kuenzanisa miganhu yeasymptotic, uye kufamba-famba-chaiyo-yepasirese kutengeserana, vagadziri vanogona kugadzira masisitimu anokwira zvakanaka uye anoita zvakavimbika.
Munguva inotsanangurwa nedata-inotungamirwa hunyanzvi, kugona kuona pakati pe O(n log n) uye an O(n) mhinduro haisi yedzidzo chete chinhu chakakosha. Paunenge uchifambira mberi muzvidzidzo zvako, rangarira: kuomarara kuongororwa hakusi kwenhamba nezviratidzo chete. Izvo ndezvekunzwisisa kurova kwemoyo kwekombuta pachayo.
Kubva pa199, sangana nezvishongo zvako zvakavambwa muGuangzhou, China, zvishongo zvibodzwa zvechikepe. Isu tiri zvishongo zvebhizinesi yekubatanidza dhizaini, kugadzirwa nekutengeswa.
+86-19924726359/+86-13431083798
Floor 13, West Shongwe yeGome Smarn Guta, Kwete. 33 Juxin Street, Hizhu District, Guangzhou, China.