ʻO ka paʻakikī algorithm e kamaʻilio nui i nā kumuwaiwai ʻelua:
manawa
(ka lōʻihi o ka hoʻokō) a
ākea
(hoʻohana hoʻomanaʻo). ʻOiai e ana ka paʻakikī o ka manawa i ka ulu ʻana o ka manawa holo me ka nui hoʻokomo (
n
), loiloi ka paʻakikī o ka lewa i ka hoʻohana ʻana i ka hoʻomanaʻo. ʻo kahi laʻana:
- He algorithm me
O(n)
ʻO ka paʻakikī o ka manawa e hoʻonui i ka laina me ka nui hoʻokomo.
- He algorithm me
O(1)
hoʻohana ka paʻakikī o ka lewa i ka hoʻomanaʻo mau me ka nānā ʻole i ka nui hoʻokomo.
Pono nā ana ʻelua. Hiki i kahi algorithm wikiwiki ke hoʻopau i ka hoʻomanaʻo ma nā ʻikepili nui, aʻo ka algorithm hoʻomanaʻo-efficient hiki ke lohi loa no nā noi manawa maoli.
ʻO ka maikaʻi e kuhikuhi i ka hiki. E noʻonoʻo e hoʻokaʻawale i kahi papa inoa o 10 mau mea me 10 miliona:
- A
ʻano ʻōhū
(
O(n)
) hiki ke lawa no nā ʻikepili liʻiliʻi akā lilo i mea hiki ʻole no nā mea nui.
- A
hoʻohui ʻano
(
O(n log n)
) mālama i nā ʻikepili nui me ka nani akā pono ka hoʻomanaʻo hou.
Hāʻawi ka loiloi paʻakikī i kahi ʻōlelo ākea e hoʻohālikelike i nā algorithms, e wehe ana i nā kikoʻī kikoʻī kikoʻī. Hāʻawi ia i nā mea hoʻomohala e wānana i ka scalability a pale i nā bottlenecks i nā ʻōnaehana koʻikoʻi.
Hōʻike nā noʻonoʻo Asymptotic i ke ʻano palena o nā hana, e hāʻawi ana i kahi pōkole no ka paʻakikī. ʻO nā hōʻailona mua ʻekolu:
ʻO ka notation Big O e wehewehe i ka lōʻihi o ka manawa a i ʻole ka nui o kahi algorithm e lawe ai. ʻo kahi laʻana:
-
O(1)
: Ka manawa mau (e laʻa, ke kiʻi ʻana i kahi mea hoʻonohonoho ma ka index).
-
O(n)
: Ka manawa laina (e laʻa, ke hoʻololi ʻana i kahi papa inoa).
-
O(n)
: Ka manawa pāhāhā (e laʻa, nā puka lou i loko o ke ʻano ʻōhū).
ʻO Big O ka metric maʻamau i hoʻohana ʻia, no ka mea e hōʻoiaʻiʻo i nā kaupaku hana.
Hōʻike ka Omega i ka manawa liʻiliʻi e pono ai. ʻo kahi laʻana:
- Loaʻa kahi hulina laina
(1)
inā ʻo ka pahuhopu ka mea mua.
ʻOiai ka manaʻo maikaʻi, ʻoi aku ka liʻiliʻi o ka ʻike no ka hoʻolālā hihia maikaʻi loa.
Hoʻohui ʻo Theta iā Big O a me Omega, e hōʻike ana i ka ʻano asymptotic pololei. Inā like nā algorithms maikaʻi a maikaʻi ʻole:
-
(n log n)
pili i ka hoʻohui ʻana i nā ʻano awelika a me nā hiʻohiʻona ʻino loa.
Hoʻokaʻawale kēia mau noʻonoʻo i nā mea mau a me nā huaʻōlelo haʻahaʻa, e kālele ana i ka ulu ulu. ʻo kahi laʻana, 2n + 3n + 4 maʻalahi i O(n) no ka mea, ʻoi ka huaʻōlelo quadratic no ka nui n .
ʻO ka hoʻomaopopo ʻana i nā papa paʻakikī e kōkua i ka hoʻokaʻawale ʻana i nā algorithm e ka scalability. Eia kahi hierarchy mai ka nui a hiki i ka liʻiliʻi loa:
ʻAʻole loli ka manawa hoʻokō a me ka hoʻomanaʻo
n
ulu.
-
Laʻana
: Ke komo ʻana i kahi waiwai papaʻaina hash ma ke kī.
Hoʻonui ka manawa holo me ka logarithmically
n
.
-
Laʻana
: Hoʻokaʻawale ka ʻimi binary i ka hapalua o ka wahi hoʻokomo i kēlā me kēia hoʻololi.
Hoʻohālikelike ka manawa holo me
n
.
-
Laʻana
: Huli laina ma ka papa inoa ʻole.
Mea maʻamau i nā algorithms divide-and-conquer.
-
Laʻana
: Hoʻohui i ka ʻano a me ka ʻano puʻu.
Ke alakaʻi nei ka hoʻonui ʻana i ka pahū.
-
Laʻana
: Ke ʻano ʻōhū a me ke ʻano koho.
Pālua ka manawa holo me kēlā me kēia hoʻokomo hou.
-
Laʻana
: Recursive Fibonacci helu me ka memoization.
Nā algorithm e pili ana i ka permutation.
-
Laʻana
: Hoʻoholo i ka pilikia o ka mea kūʻai aku ma o ka hana ʻino.
ʻO ka ʻokoʻa ma waena O(n log n) a O(n) lilo loa no n = 10 : hiki i ka mea mua ke hoʻokō i nā milliseconds, ʻoiai hiki i ka hope ke lawe i nā lā.
Hana ʻokoʻa nā algorithm ma muli o nā hoʻonohonoho hoʻokomo. ʻO ka nānā ʻana i nā hihia āpau e hōʻoia i ka paʻa:
Hiki ke koho i kahi mea huli hulina waihona ma waena o kahi hui hash ( O(n + m) ) a hui pū ʻia ka loop ( O(nm) ) ma muli o ka puʻunaue ʻikepili. He mea koʻikoʻi ka nānā ʻana i nā hihia koʻikoʻi no nā ʻōnaehana koʻikoʻi palekana (e laʻa, polokalamu mokulele), kahi i ʻae ʻole ʻia ka hiki ʻole ke ʻike.
Hiki ke hoʻoponopono ʻia ka pilikia like me ka hoʻohana ʻana i nā algorithms like ʻole. No ka laʻana, hiki ke hoʻoponopono ʻia ka pilikia o ka ʻimi ʻana i kahi waiwai i loko o kahi papa inoa o nā waiwai me ka hoʻohana ʻana i nā algorithms like ʻole, e like me ka huli laina, ʻimi binary, a i ʻole ka ʻimi papaʻaina hash.
Hoʻohālikelike ka papa ma lalo i ka paʻakikī o ka manawa a me ka lewa o kēia mau algorithms no ka ʻimi ʻana i kahi waiwai i loaʻa i kahi papa inoa o n waiwai.
ʻO ke koho o ka algorithm e pili ana i ka nui o ka pilikia, nā ʻano hoʻokomo, a me nā kumuwaiwai i loaʻa. No ka laʻana, inā liʻiliʻi ka papa inoa a ʻaʻole i hoʻokaʻawale ʻia, ʻo ka huli laina paha ke koho maikaʻi loa. Inā nui a hoʻokaʻawale ʻia ka papa inoa, ʻo ka huli binary paha ke koho maikaʻi loa. Inā nui ka papa inoa a hoʻokaʻawale ʻole ʻia, ʻo ka huli ʻana i ka papaʻaina hash ke koho maikaʻi loa.
ʻO ka loiloi amortized ka awelika manawa ma luna o ke kaʻina hana.
-
Laʻana
: Nā papa hana hoʻoikaika palua i ka piha. ʻOiai hoʻokahi
paʻi
hana paha
O(n)
manawa, koe ke koina i hoopauia
O(1)
.
Algorithms like
Monte Carlo
a
Las Vegas
hoʻohana randomness no ka pono.
-
Laʻana
: Loaʻa i ka hoʻāʻo mua ʻana o Miller-Rabin nā hōʻoia probabilistic akā ʻoi aku ka wikiwiki ma mua o nā ʻano deterministic.
ʻO kekahi mau pilikia (e laʻa, Boolean satisfiability). NP-piha , 'o ia ho'i, 'a'ohe hopena polynomial-manawa i 'ike 'ia. ʻO ka hōʻoia ʻana i ka hoʻopiha piha ʻana o NP ma o nā hōʻemi e kōkua i ka hoʻokaʻawale ʻana i ka paʻakikī helu.
ʻO An O(n) hiki i ka clustering algorithm ke lilo i bottleneck no ka nui o nā waihona, e hoʻoneʻe ana i nā neʻe i nā ala like e like me nā kumulāʻau kd ( O(n log n) ).
Ke hilinaʻi nei nā ʻōnaehana kī lehulehu i ka paʻakikī o O(2) pilikia (eg, integer factorization) e pale aku i nā hoʻouka kaua.
Hoʻokumu mua nā ʻenekini hoʻolilo manawa maoli O(1) nā algorithms no ka hoʻohālikelike physics e mālama i 60+ FPS.
He mea nui ke kuai ana:
-
Manawa vs. Space
: E hoʻohana i nā palapala 'āina hash (
O(1)
lookups) ma ke kumukūʻai o ka hoʻomanaʻo.
-
Ka maʻalahi vs. ʻO ka maikaʻi
: ʻAno hoʻokomo (
O(n)
) ʻoi aku ka maikaʻi no nā ʻikepili liʻiliʻi, kokoke i hoʻokaʻawale ʻia.
No ka recursive algorithms, recursive relations model runtime. No ka laʻana, hoʻohui i ka hoʻi hou ʻana:
[ T(n) = 2T(n/2) + O(n) ] hoʻoholo i
O(n log n)
ma o ka
Kumu Kumu
.
Hoʻopiha ka hoʻāʻo ʻana i ka manaʻo ʻepekema. Hōʻike nā mea paahana (e laʻa, Valgrind, perf) i nā bottlenecks honua maoli.
python
def linear_sum(arr):
huina = 0
no ka helu ma ka arr:
huina += helu
huina hoʻihoʻi
def quadratic_sum(arr):
huina = 0
no ka mea i in arr:
no ka j in arr:
huina += i * j
huina hoʻihoʻi
ʻOiai O(n) abstracts away mau, a 100n ʻoi aku ka lohi o ka algorithm ma mua o a 0.01n algorithm no ka hana n .
ʻO An O(n log n) haʻahaʻa paha ka algorithm O(n) no ka mea n = 10 ma muli o ke poʻo.
He hana Fibonacci i hoʻomanaʻo ʻia ( O(n) space) hiki ke hāʻule i nā mea hoʻokomo nui, ʻaʻole like me kahi mana iterative ( O(1) hakahaka).
ʻO kahi BST hoʻohālikelike ponoʻī ( ʻO(log n) ʻoi aku ka palekana ma mua o ka BST maʻamau ( O(n) ʻino loa) no ka ʻikepili hilinaʻi ʻole.
ʻO ka loiloi paʻakikī algorithm ke alakaʻi ʻana i nā mea hoʻomohala ma o ka ʻāina ākea o ka pono helu. No nā haumāna MTSC7196, ʻo ka hoʻopaʻa ʻana i kēia aʻo e hoʻopili i ka ʻike kumu a me ka ʻike hana. Ma ka wehewehe ʻana i nā koi o ka manawa a me ka lewa, ka hoʻohālikelike ʻana i nā palena asymptotic, a me ka hoʻokele ʻana i nā kālepa o ka honua maoli, hiki i nā mea hoʻomohala ke hana i nā ʻōnaehana e hoʻonui maikaʻi a hana pono.
I loko o kahi au i wehewehe ʻia e ka ʻikepili-driven innovation, ka hiki ke ʻike ma waena o kahi O(n log n) a he O(n) ʻAʻole pono ka hoʻonaʻauao wale nō he mea koʻikoʻi. Ke holomua nei ʻoe ma kāu mau haʻawina, e hoʻomanaʻo: ʻaʻole pili wale ka nānā ʻana i ka paʻakikī e pili ana i nā helu a me nā hōʻailona. E pili ana i ka hoʻomaopopo ʻana i ka puʻuwai o ka helu ʻana iā ia iho.
Mai ka makahiki 2019, e hui pū me nā mea kūʻai aku i hoʻokumuʻia ma guangzhou, china, china mea hana hana hana. He mea kūʻai aku mākou i ka hoʻolālāʻana i ka hoʻolālāʻana, ka hana a me ke kūʻai aku.
+86-19924726359/+86-13431083798
Papa 13, komohana komohana o Gome Smart City, non 33ʻO Iulai Street, Hazhu Stude, Gungzhou, Kina.