Kuvuta kwa algorithm kumakhudzanso zinthu ziwiri:
nthawi
(nthawi yomaliza) ndi
danga
(kugwiritsa ntchito kukumbukira). Ngakhale zovuta za nthawi zimayesa momwe nthawi yothamanga imakulira ndi kukula kwake (
n
), zovuta za danga zimayesa kugwiritsa ntchito kukumbukira. Mwachitsanzo:
- Algorithm yokhala ndi
O(n)
Kuvuta kwa nthawi kumasiyana motsatira kukula kwake.
- Algorithm yokhala ndi
O(1)
Kuvuta kwa danga kumagwiritsa ntchito kukumbukira kosalekeza mosasamala kanthu za kukula kwake.
Ma metric onse ndi ofunikira. Ma algorithm othamanga amatha kusokoneza kukumbukira pamaseti akulu akulu, pomwe ma algorithm okumbukira bwino amatha kukhala ochedwa kwambiri pakugwiritsa ntchito nthawi yeniyeni.
Kuchita bwino kumatengera kuthekera. Lingalirani kusanja mndandanda wazinthu 10 motsutsana ndi 10 miliyoni:
- A
mtundu wa bubble
(
O(n)
) zitha kukhala zokwanira pamagulu ang'onoang'ono koma kukhala osatheka kwa akulu.
- A
kuphatikiza mtundu
(
O(n log n)
) imagwira ma dataseti akulu mwaulemu koma imafunikira kukumbukira kowonjezera.
Kusanthula kwazovuta kumapereka chiyankhulo chapadziko lonse lapansi kuti chifanizire ma aligorivimu, kuchotsa tsatanetsatane wa Hardware. Imapatsa mphamvu otukula kulosera za scalability ndikupewa zovuta pamakina ovuta.
Zolemba za asymptotic zimafotokozera momwe magwiridwe antchito amagwirira ntchito, ndikupereka chidule chazovuta. Zizindikiro zitatu zoyambirira ndizo:
Big O notation imatanthawuza nthawi yayitali kapena malo omwe algorithm ingatenge. Mwachitsanzo:
-
O(1)
: Nthawi yokhazikika (mwachitsanzo, kupeza mndandanda wazinthu ndi index).
-
O(n)
: Nthawi ya mzere (mwachitsanzo, kubwereza pamndandanda).
-
O(n)
: Nthawi ya Quadratic (mwachitsanzo, malupu okhala mumtundu wa thovu).
Big O ndiye metric yomwe imagwiritsidwa ntchito kwambiri, chifukwa imatsimikizira denga la ntchito.
Omega amafotokoza nthawi yochepa yofunikira. Mwachitsanzo:
- Kusaka kwa mzere kwachitika
(1)
ngati chandamale ndi chinthu choyamba.
Ngakhale kuli ndi chiyembekezo, kusanthula kwabwino sikukhala kothandiza kwambiri pakukonza zovuta kwambiri.
Theta imaphatikiza Big O ndi Omega, kuyimira mawonekedwe enieni a asymptotic. Ngati ma algorithms abwino komanso oyipa kwambiri ali ofanana:
-
(n log n)
imagwira ntchito pakuphatikiza mitundu yapakati komanso yoyipa kwambiri.
Zolemba izi zimangonena zokhazikika komanso zotsika, zomwe zimayang'ana kwambiri kukula. Mwachitsanzo, 2n +3n + 4 zimathandizira ku O(n) chifukwa mawu akuti quadratic amalamulira kwambiri n .
Kumvetsetsa makalasi ovuta kumathandizira kugawa ma algorithms ndi scalability. Nayi mndandanda wotsogola kuchokera ku ambiri mpaka osachita bwino:
Nthawi yochitira kapena kukumbukira sikunasinthe ngati
n
amakula.
-
Chitsanzo
: Kupeza mtengo wa tebulo la hashi ndi kiyi.
Runtime imakula molingana ndi
n
.
-
Chitsanzo
: Kusaka kwa binary kumachepetsa malo olowera nthawi iliyonse.
Nthawi yothamanga mamba molingana ndi
n
.
-
Chitsanzo
: Kusaka kwa mzere pamndandanda wosasankhidwa.
Zodziwika mu magawo-ndi-kugonjetsa ma aligorivimu.
-
Chitsanzo
: Gwirizanitsani mtundu ndi mtundu wa milu.
Kuchulukitsa kwa mbande kumabweretsa kukula kwamphamvu.
-
Chitsanzo
: Mtundu wa bubble ndi kusankha mtundu.
Nthawi yothamanga imawirikiza kawiri ndikuwonjezera kulikonse.
-
Chitsanzo
: Kuwerengera kwa Fibonacci kobwerezabwereza popanda kuloweza.
Ma algorithms ozikidwa pa permutation.
-
Chitsanzo
: Kuthetsa vuto la ogulitsa oyendayenda pogwiritsa ntchito brute-force.
Kusiyana pakati O(n log n) ndi O(n) zimakhala zovuta kwa n = 10 : woyamba akhoza kupha mu milliseconds, pamene otsiriza angatenge masiku.
Ma algorithms amagwira ntchito mosiyanasiyana kutengera masinthidwe olowera. Kusanthula milandu yonse kumatsimikizira kulimba:
Wowonjezera wamafunso angasankhe pakati pa kujowina hashi ( O(n + m) ) ndi kujowina kuzungulira kwa zisa ( O(nm) ) kutengera kugawa kwa data. Kusanthula koyipa kwambiri ndikofunikira pamakina ofunikira kwambiri pachitetezo (mwachitsanzo, mapulogalamu oyendetsa ndege), pomwe kusadziwikiratu sikuvomerezeka.
Vuto lomwelo litha kuthetsedwa pogwiritsa ntchito ma aligorivimu osiyanasiyana. Mwachitsanzo, vuto lofufuza mtengo womwe mukufuna kutsata pamndandanda wamakhalidwe amatha kuthetsedwa pogwiritsa ntchito ma aligorivimu osiyanasiyana, monga kusaka kwa mizere, kusaka kwa binary, kapena kusaka pa tebulo la hashi.
Gome ili m'munsili likufanizira zovuta za nthawi ndi danga za ma aligorivimuwa pofufuza mtengo womwe mukufuna pamndandanda wa n makhalidwe abwino.
Kusankhidwa kwa algorithm kumatengera kukula kwa vuto, mawonekedwe olowera, ndi zinthu zomwe zilipo. Mwachitsanzo, ngati mndandandawo uli wocheperako komanso wosasankhidwa, kusaka pamzere kungakhale njira yabwino kwambiri. Ngati mndandandawo ndi waukulu komanso wosanjidwa, kusaka kwa binary kungakhale njira yabwino kwambiri. Ngati mndandandawo ndi waukulu komanso wosasankhidwa, kusaka kwa tebulo la hashi kungakhale chisankho chabwino kwambiri.
Kusanthula kwachiwongola dzanja kumatengera nthawi pazotsatira zantchito.
-
Chitsanzo
: Dynamic arrays kuwirikiza kawiri ikadzadza. Ndili single
Kankhani
opaleshoni ikhoza kutenga
O(n)
nthawi, mtengo wa amortized amakhalabe
O(1)
.
Ma algorithms ngati
Monte Carlo
ndi
Las Vegas
gwiritsani ntchito mwachisawawa kuti muchite bwino.
-
Chitsanzo
: Miller-Rabin primality test ili ndi chitsimikizo chotheka koma imathamanga kuposa njira zodziwikiratu.
Mavuto ena (mwachitsanzo, kukhutitsidwa kwa Boolean) ndi NP-yathunthu , kutanthauza kuti palibe yankho lodziwika bwino la nthawi ya polynomial. Kutsimikizira kukwanira kwa NP kudzera pakuchepetsa kumathandiza kugawa kuuma kwa ma computational.
An O(n) clustering aligorivimu ikhoza kukhala chopinga cha ma dataset akuluakulu, zomwe zimapangitsa kusinthana ku njira zoyerekeza ngati mitengo ya kd ( O(n log n) ).
Machitidwe achinsinsi pagulu amadalira kuuma kwa O(2) mavuto (mwachitsanzo, integer factorization) kukana kuwukiridwa.
Injini zoperekera nthawi yeniyeni zimayika patsogolo O(1) ma algorithms oyeserera afizikiki kuti asunge 60+ FPS.
Kusinthanitsa kuli kofunika:
-
Nthawi vs. Malo
: Gwiritsani ntchito mapu a hashi (
O(1)
lookups) pamtengo wokumbukira.
-
Kuphweka vs. Kuchita bwino
: Mtundu wolowetsa (
O(n)
) zitha kukhala zabwino pamagulu ang'onoang'ono, pafupifupi osanjidwa.
Kwa ma aligorivimu obwerezabwereza, ma recurrence relationship model runtime. Mwachitsanzo, kuphatikiza mitundu kubwereza:
[ T(n) = 2T(n/2) + O(n) ] watsimikiza kuti
O(n log n)
kudzera pa
Master Theorem
.
Kuyesa kwamphamvu kumakwaniritsa kusanthula kwamalingaliro. Zida zolozera mbiri (monga Valgrind, perf) zimawonetsa zovuta zenizeni.
nsato
def linear_sum(arr):
chonse = 0
kwa num arr:
chiwerengero += nambala
kubwerera kwathunthu
def quadratic_sum(arr):
chonse = 0
kwa ine:
kwa j mu:
chiwerengero += ine *j
kubwerera kwathunthu
Pamene O(n) amachotsa zokhazikika, a 100n algorithm ikhoza kukhala yocheperako kuposa a 0.01n algorithm yothandiza n .
An O(n log n) algorithm ikhoza kukhala yocheperako O(n) za n = 10 chifukwa cha kuchuluka.
Ntchito yoloweza pamtima ya Fibonacci ( O(n) space) imatha kuwonongeka pazolowera zazikulu, mosiyana ndi mtundu wobwereza ( O(1) danga).
BST yodziyimira payokha ( O(logi n) kusaka) ndikotetezeka kuposa BST wamba ( O(n) zoipa kwambiri) kwa data yosadalirika.
Kusanthula kwa algorithm ndikuwongolera kampasi komwe kumatsogolera kumadera ambiri aukadaulo wamakompyuta. Kwa ophunzira a MTSC7196, kudziwa bwino mwambowu kumalumikiza chidziwitso chaukadaulo komanso ukadaulo wothandiza. Mwa kusiyanitsa zofunikira za nthawi ndi malo, kufananiza malire a asymptotic, ndikuyendetsa malonda enieni padziko lapansi, opanga mapulogalamu amatha kupanga machitidwe omwe amakula mokongola ndikuchita modalirika.
Munthawi yomwe imatanthauzidwa ndi luso loyendetsedwa ndi data, kuthekera kozindikira pakati pa O(n log n) ndi a O(n) Yankho sizinthu zamaphunziro zokha zomwe ndizofunikira kwambiri. Pamene mukupita mu maphunziro anu, kumbukirani: kusanthula zovuta sikungokhudza manambala ndi zizindikiro. Zimakhudza kumvetsetsa kugunda kwa mtima kwa kuwerengera komweko.
Kuyambira mu 2019, kukumana ndi zodzikongoletsera inu zimakhazikitsidwa ku Guangzhou, China, ayezi wopanga miyala. Ndife zodzikongoletsera zodzikongoletsera zowonjezera, kupanga ndi kugulitsa.
+86-19924726359/+86-13431083798
Pansi 13, West Tower ya Gome Smart City, No. 33 Juxin Street, Chigawo cha Haizhu, Guangzhou, China.