Ho makatsa ka compression ya data

Ho makatsa ka compression ya data Bothata ba khatello ea data, ka mokhoa o bonolo ka ho fetisisa, bo ka amana le linomoro le lintlha tsa tsona. Linomoro li ka hlalosoa ka lipalo ("leshome le motso o le mong" bakeng sa nomoro ea 11), lipolelo tsa lipalo ("bobeli ka mashome a mabeli" bakeng sa 1048576), mantsoe a likhoele ("tse robong tse hlano" bakeng sa 99999), mabitso a nepahetseng ("palo ea sebata" bakeng sa 666, "selemo sa lefu la Turing" bakeng sa 1954), kapa metsoako ea eona e sa reroang. Lebitso leha e le lefe le loketse leo ka lona moemeli a ka tsebang ka ho hlaka hore na re bua ka palo efe. Ho hlakile, bolella moqoqo oa hau "factorial of eight" e sebetsang hantle hofeta mongolo o lekanang "likete tse mashome a mane le makholo a mararo le mashome a mabeli". Ho hlaha potso e utloahalang mona: tlhaloso e khutšoanyane ea nomoro e fanoeng ke efe?

Rafilosofi Bertrand Russell o ile a hatisa ka 1908 "Khohlano ea Berry", e amang taba ea ho ngola linomoro ka lehlakoreng le leng: Ke palo efe e nyenyane ka ho fetisisa e sa hlokeng litlhaku tse mashome a robeli?
Palo e joalo e tlameha ho ba teng: ho tloha ho litlhaku tse mashome a robeli le libaka tsa Serussia u ka etsa mabitso a 3480 feela, ho bolelang hore ho sebelisa litlhaku tse mashome a robeli u ka khetha linomoro tse fetang 3480. Sena se bolela hore ho ke ke ha khoneha ho hlalosa palo e itseng e sa feteng 3480 ka tsela ena.

Sena se bolela hore nomoro ena e tla lumellana le tlhaloso "palo e nyenyane ka ho fetisisa eo litlhaku tse mashome a robeli li sa lekaneng bakeng sa eona", e nang le litlhaku tse 78 feela! Ka lehlakoreng le leng, palo ena e tlameha ho ba teng; ka lehlakoreng le leng, haeba palo ena e teng, joale lebitso la eona ha le lumellane le eona. Ho makatsa!

Tsela e bonolo ka ho fetisisa ea ho qhelela pherekano ena ke ho bua ka mokhoa o sa reroang oa litlhaloso tsa mantsoe. Joalo, haeba feela sete e hlalositsoeng ka ho khetheha e ne e lumelletsoe ho notation, joale "palo e nyenyane ka ho fetisisa eo litlhaku tse mashome a robeli li sa lekaneng bakeng sa eona" e ke ke ea e-ba mongolo o nepahetseng, athe lintlha tse molemo li ka ba joalo "factorial of eight" e ne e tla lula e amoheleha.

Na ho na le mekhoa e hlophisitsoeng ea ho hlalosa tatellano (algorithm) ea liketso lipalong? Ho na le, 'me ka bongata - li bitsoa lipuo tsa lenaneo. Sebakeng sa lintlha tsa mantsoe, re tla sebelisa mananeo (mohlala, ho Python) a bonts'ang linomoro tse hlokahalang. Ka mohlala, bakeng sa tse robong tse hlano lenaneo le loketse print("9"*5). Re tla tsoela pele ho thahasella lenaneo le lekhutšoane la palo e fanoeng. Bolelele ba lenaneo le joalo le bitsoa Kolmogorov e rarahaneng lipalo; ke moeli oa theory oo palo e fanoeng e ka hatelloang ho ona.

Sebakeng sa pherekano ea Berry, joale re ka nahana ka e tšoanang: Ke palo efe e nyenyane ka ho fetisisa eo lenaneo la kilobyte le sa lekaneng ho e hlahisa?

Re tla beha mabaka ka tsela e tšoanang le ea pele: ho na le litemana tsa 2561024 kilobyte, ho bolelang hore ha ho linomoro tse fetang 2561024 tse ka hlahisoang ke mananeo a kilobyte. Sena se bolela hore palo e itseng e seng kholo ho feta 2561024 e ke ke ea fumanoa ka tsela ena.

Empa ha re ngoleng lenaneo ho Python le hlahisang litemana tsohle tse ka khonehang tsa kilobyte, e li tsamaisang bakeng sa ts'ebetsong, 'me haeba li hlahisa palo, ebe e eketsa nomoro ena bukeng ea tse fumanehang. Ka mor’a ho hlahloba menyetla eohle e 2561024 XNUMX XNUMX, ho sa tsotellehe hore na e nka nako e kae, lenaneo le batla palo e nyenyane ka ho fetisisa e sieo bukeng e hlalosang mantsoe ’me le hatisa palo eo. Ho bonahala ho hlakile hore lenaneo le joalo le tla lumellana le kilobyte ea khoutu - 'me le tla hlahisa eona palo e ke keng ea hlahisoa ke lenaneo la kilobyte!

Ho ts'oaroa ke eng hona joale? E ke ke ea hlola e amahanngoa le ho se hlophisehe ha notation!

Haeba u ferekanngoa ke taba ea hore lenaneo la rona le tla hloka palo ea memori ea linaleli ho sebetsa - dikishinari (kapa bit array) ea likarolo tse 2561024 - joale u ka etsa ntho e tšoanang ntle le eona: bakeng sa palo e 'ngoe le e' ngoe ea 2561024, ka lehlakoreng le leng. , tsamaea ka mananeo ohle a 2561024 a ka khonehang, ho fihlela ho se na e loketseng. Ha ho tsotellehe hore patlisiso e joalo e tla nka nako e telele haholo: ka mor'a ho hlahloba lipara tse ka tlaase ho (2561024) 2 ho tloha palo le lenaneo, e tla fela 'me e fumane nomoro eo e ratoang haholo.

Kapa e ke ke ea fela? Ka sebele, har'a mananeo ohle a tla lekoa, ho tla ba le while True: pass (le li-analogues tsa eona tse sebetsang) - 'me taba e ke ke ea feta ho feta ho leka lenaneo le joalo!

Ho fapana le pherekano ea Berry, moo ho ts'oaroang ho neng ho le teng ka mokhoa o sa reroang oa notation, tabeng ea bobeli re na le phetoho e entsoeng hantle. "ho emisa mathata". 'Nete ke hore ha ho khonehe ho fumana tlhahiso ea eona ho tsoa lenaneong ka nako e lekanyelitsoeng. Ka ho khetheha, ho rarahana ha Kolmogorov e sa lekanngweng le letho: ha ho na algorithm e ka lumellang, bakeng sa palo e fanoeng, ho fumana bolelele ba lenaneo le lekhutšoanyane ka ho fetisisa le hatisang palo ena; ho bolelang hore ha ho na tharollo bothateng ba Berry - ho fumana bolelele ba lebitso le khuts'oane la mantsoe bakeng sa nomoro e fanoeng.

Source: www.habr.com

Eketsa ka tlhaloso