E rua nga rauemi e aro nui ana te uaua o te taurangi:
wā
(te roanga mahi) me
wāhi
(whakamahi mahara). Ahakoa te uaua o te wa ka ine me pehea te tipu o te wa whakahaere me te rahi whakauru (
n
), ka arotakehia e te matatini mokowhiti te kohi mahara. Hei tauira:
- He algorithm me
O(n)
ka tauine te uaua o te waa ki te rahi whakauru.
- He algorithm me
O(1)
ka whakamahia e te uaua o te waahi te mahara tonu ahakoa te rahi o te whakauru.
He mea nui nga inenga e rua. Ko te hātepee tere ka pau te mahara i runga i nga huingararaunga nui, i te mea he puhoi rawa te huringa mahara-pai mo nga tono wa-tūturu.
Ko te kaha e tohu ana i te whaihuatanga. Whakaarohia te whakariterite i te rarangi o nga mea 10 ki te 10 miriona:
- A
momo mirumiru
(
O(n)
) ka ranea pea mo nga huingararaunga iti engari ka kore e tika mo nga mea nunui.
- A
hanumi momo
(
O(n rangitaki n)
) he pai te whakahaere i nga huingararaunga nui engari me mahara ano.
Ko te tātaritanga matatini he reo mo te ao ki te whakatairite i nga algorithms, te tango i nga korero mo nga taputapu motuhake. Ka whakamanahia nga kaiwhakawhanake ki te matapae i te whakahiatotanga me te karo i nga kohungahunga i roto i nga punaha whakahirahira.
Ko nga tohu asymptotic e whakaatu ana i te whanonga whakatepe o nga mahi, he tohu poto mo te uaua. Ko nga tohu tuatahi e toru:
Ko te tohu nui O te tohu mo te wa mokowhiti, mokowhiti ranei ka tangohia e te algorithm. Hei tauira:
-
O(1)
: Te wa tonu (hei tauira, te uru ki tetahi huānga huānga mā te taupū).
-
O(n)
: Te wa raina (hei tauira, te huri i te rarangi).
-
O(n)
: Wā tapawhā (hei tauira, ngā koropiko kōhanga i roto i te momo mirumiru).
Ko Big O te inenga e whakamahia nuitia ana, na te mea ka whakamanahia nga tuanui mahi.
Kei te whakaahua a Omega i te wa iti e hiahiatia ana. Hei tauira:
- He rapu rarangi
(1)
mehemea ko te whainga te huānga tuatahi.
Ahakoa he pai, he iti ake te korero o te tātaritanga take pai rawa atu mo te whakamahere keehi kino rawa atu.
Ka whakakotahi a Theta i a Big O me Omeka, e tohu ana i te whanonga asymptotic tika. Mena he rite tonu nga keehi algorithms pai me nga keehi kino rawa atu:
-
(n rangitaki n)
e pa ana ki te whakakotahi i nga ahuatanga toharite me nga ahuatanga kino rawa atu.
Ka tangohia e enei tohu nga kupu tuturu me nga kupu ota-iti, e aro ana ki nga reiti tipu. Hei tauira, 2n + 3n + 4 whakangawari ki O(n) na te mea ko te kupu tapawha te rangatira mo te nui n .
Ko te mohio ki nga karaehe uaua ka awhina ki te whakarōpū i nga algorithms ma te tauineine. Anei he raupapatanga mai i te nuinga ki te iti rawa:
Ko te wa mahi, te mahara ranei ka noho tonu
n
tupu ana.
-
Tauira
: Te uru ki te uara ripanga hash ma te matua.
Ka tipu haere te wa mahi ki te
n
.
-
Tauira
: Ko te rapu-rua ka hauruatia te mokowā whakauru ia whitiwhitinga.
Whakataurite riterite ki
n
.
-
Tauira
: Rapu raina i roto i te rarangi kaore i tohua.
He mea noa i roto i nga algorithm wehewehe-a-toa.
-
Tauira
: Hanumi te ahua me te ahua puranga.
Ko nga whitirua kohanga ka arahi ki te tipu pahū.
-
Tauira
: Te momo mirumiru me te momo whiriwhiri.
Ka ruarua te wa whakahaere me ia whakauru taapiri.
-
Tauira
: Recursive Fibonacci tātaitanga kahore memoization.
Whakatau-a-whakaritenga hātepe.
-
Tauira
: Te whakaoti i te raru o te kaihoko haere ma te mahi nanakia.
Te rereketanga i waenga O(n rangitaki n) a O(n) ka tino kaha mo n = 10 : ko te mea o mua ka mahia i roto i nga manomano, ka roa pea nga ra.
He rereke te mahi a nga Algorithm i runga i nga whirihoranga whakauru. Ma te wetewete i nga keehi katoa ka mau te pakari:
Ka taea e te kaitirotiro patai paparangi te whiriwhiri i waenga i te urunga hash ( O(n + m) ) me te hono kohanga kohanga ( O(nm) ) i runga i te tohatoha raraunga. He mea nui te tātaritanga take kino rawa atu mo nga punaha tino-ahuru (hei tauira, he rorohiko rererangi), kaore e taea te matapae.
Ko te raruraru ano ka taea te whakatau ma te whakamahi i nga algorithms rereke. Hei tauira, ko te raruraru o te rapu i tetahi uara whainga i roto i te rarangi o nga uara ka taea te whakaoti ma te whakamahi i nga momo algorithms, penei i te rapu rarangi, te rapu rua, te rapu ripanga hash ranei.
Ko te ripanga i raro nei e whakatairite ana i nga uaua o te waa me te mokowā o enei hātepe mo te rapu i te uara whainga i roto i te rarangi o n uara.
Ko te whiriwhiri o te algorithm ka whakawhirinaki ki te rahi o te raru, nga ahuatanga whakauru, me nga rauemi e waatea ana. Hei tauira, mena he iti te rarangi karekau i tohua, ko te rapu rarangi te mea pai rawa atu. Mēnā he nui te rārangi me te kōmaka, ko te rapu ā-rua te mea pai rawa atu. Mēnā he nui te rārangi, kāore i kōmakahia, ko te rapu ripanga hash te mea pai rawa atu.
Ko te wetewete kua whakahekehia te wa toharite mo te raupapa o nga mahi.
-
Tauira
: Huanga hihiko kia rua te kaha ina ki tonu. Ahakoa he kotahi
pana
ka mau pea te mahi
O(n)
i te wa, ka noho tonu te utu whakaheke
O(1)
.
Algoritms rite
Monte Carlo
a
Las Vegas
whakamahi matapōkeretia mo te pai.
-
Tauira
: Ko te whakamatautau tuatahi a Miller-Rabin he taurangi pea engari he tere ake i nga tikanga whakatau.
Ko etahi raruraru (hei tauira, Boolean satisfiability) ko NP-oti , te tikanga karekau he otinga taima-wa e mohiotia ana. Ko te whakamatau i te NP-whakaoti ma te whakaheke ka awhina i te whakarōpū i te pakeke o te rorohiko.
He O(n) Ka taea e te whakahiato hātepee te noho hei kohungahunga mo nga huingararaunga nui, ka huri ki nga tikanga tata penei i nga rakau kd ( O(n rangitaki n) ).
Ko nga punaha matua-iwi e whakawhirinaki ana ki te pakeke o O(2) nga raruraru (hei tauira, te tauwehenga tauoti) hei aukati i nga whakaeke.
Ko nga miihini whakaputa wa-tūturu te kaupapa matua O(1) algorithms mo te whaihanga ahupūngao ki te pupuri 60+ FPS.
He mea nui te hokohoko:
-
Time vs. Mokowā
: Whakamahia nga mapi hash (
O(1)
titiro) i te utu o te mahara.
-
Te ngawari vs. Te arotautanga
: Kōmaka Kōkuhu (
O(n)
) he pai ake pea mo nga huingararaunga iti, tata kua tohua.
Mo nga algorithm recursive, ka whakatauira nga hononga hokinga i te wa whakahaere. Hei tauira, hanumi momo hohokitanga:
[ T(n) = 2T(n/2) + O(n) ] ka whakatau ki
O(n rangitaki n)
mā te
Kaupapa Rangatira
.
Ko nga whakamatautau haumanu e whakakii ana i te tātaritanga ariā. Ko nga taputapu whakakitenga (hei tauira, Valgrind, perf) e whakaatu ana i nga putea o te ao.
python
def linear_sum(arr):
tapeke = 0
mo te nama i roto i te arr:
tapeke += num
hoki katoa
def tapawhā_maha(arr):
tapeke = 0
mo ahau i roto i te arr:
mo j i te arr:
tapeke += i * j
hoki katoa
Ahakoa O(n) abstracts away constants, a 100n He puhoi ake pea te algorithm i a 0.01n hātepe hātepe mō te mahi n .
He O(n rangitaki n) he iti pea te mahi algorithm O(n) mo n = 10 na te nui o runga.
He mahinga Fibonacci kua maumahara ( O(n) mokowhiti) ka pakaru i runga i nga whakaurunga nui, kaore i rite ki te putanga hurihuri ( O(1) mokowā).
He BST taurite-whaiaro ( O(takiuru n) te rapu) he haumaru ake i te BST noa ( O(n) kino-take) mo nga raraunga kore pono.
Ko te tātaritanga matatini o te taurangi ko te kapehu e arahi ana i nga kaiwhakawhanake i roto i te whenua whanui o te mahi rorohiko. Mo nga tauira MTSC7196, ko te maataki i tenei ako ka hono i te matauranga ariā me te tohungatanga mahi. Ma te wetewete i nga whakaritenga o te waa me te waahi, te whakatairite i nga rohe asymptotic, me te whakatere i nga tauhokohoko-a-ao, ka taea e nga kaiwhakawhanake te hanga i nga punaha e pai ana te ine me te mahi pono.
I roto i te waa kua tautuhia e nga mahi hou kua peia e te raraunga, ko te kaha ki te mohio i waenga i te O(n rangitaki n) me he O(n) Ko te otinga ehara i te mea ko te maatauranga he kaupapa rautaki. I a koe e ahu whakamua ana i roto i au akoranga, maharatia: ehara i te mea mo nga nama me nga tohu anake te tātaritanga matatini. Ko tana mo te mohio ki te ngakau o te tatauranga ake.
Mai i te tau 2019, ka tutaki i nga taonga whakapaipai i Guangzhou, Haina, te turanga o te whakapaipai whakapaipai. Ko matou he umanga umanga umanga whakauru i te hoahoa, te whakaputa me te hoko.
+86-19924726359/+86-13431083798
Papa 13, Tower o te hauauru o Gome City, No. 33 Juxin Street, District Haizhu, Guangzhou, China.