Nahahati sa apat ang pagkokodigo: pagpapaliit ng datos (o pagkokodigo sa pinagmulan), pagkontrol sa error (o pagkokodigo sa daanan), kriptograpiya, at pagkokodigo sa linya. Layunin ng pagpapaliit ng datos na matanggal ang mga hindi kailangan o paulit-ulit na mga datos mula sa pinagmulan upang mabilis itong maipadala sa patutunguhan nito. Halimbawa, pinapaliit ng algoritmong ZIP ang mga file upang maipadala ito sa internet nang mabilis.[2] Samantala, layunin naman ng pagtatama sa error na magamit ang mga
paulit-ulit na datos upang masiguro ang mas matibay at di magagambalang pagdaan ng datos sa isang daanan.[3] Halimbawa, ginagamit sa mga compact disc ang kodigong Reed-Solomon upang maitama ang mga nawalang o nagulong datos mula sa pagkiskis o dumi.[4]
Kasaysayan
Si Claude Shannon ang itinuturing na nagpasimula sa teorya ng kodigo nang inilathala niya noong 1948 ang "A Mathematical Theory of Information"[a] sa dalawang magkahiwalay na bahagi sa isyu ng Hulyo at Oktubre ng Bell System Technical Journal. Dito niya inilatag ang mga ideya niya patungkol sa pinakamagandang paraan para maisakodigo ang impormasyon na gustong ipadala. Dinebelop ni Shannon ang entropiya ng impormasyon bilang panukat sa pagiging hindi tiyak ng isang mensahe, na nagbigay-daan naman sa pagkabuo sa larangan ng teorya ng impormasyon.[6][7]
Noong 1949, nadebelop ni Marcel Golay ang dalawahang kodigong Golay, isang kodigong pangtama ng error na kayang itama ang hanggang tatlong error sa bawat 24-bit na word, gayundin ang pagtukoy sa pang-apat.[8][9]
Nanalo naman si Richard Hamming ng Gawad Turing noong 1968 para sa mga ginawa niya sa Bell Labs tulad ng mga paraang numerikal, mga awtomatikong sistemang pangkodigo, at mga kodigo sa pagtukoy at pagtama sa mga error.[10]
Isa sa apat na disiplinang pinag-aaralan sa ilalim ng teorya ng kodigo ang pagpapaliit ng datos (Ingles: data compression) o pagkokodigo sa pinagmulan (Ingles: source coding). Layunin nito na paliitin ang inookupang datos ng isang bagay; halimbawa ay ang pagpapaliit sa mga masyadong malilinaw na larawan sa mga kompyuter upang makatipid ng espasyo.[2] Nagiging posible ito dahil sa mga algoritmong naghahanap ng mga pwedeng tanggalin na mga nauulit na datos. May dalawang paraan ang pwedeng gawin para dito: lossless (lit. na
'walang nawawala') at lossy (lit. na
'may nawawala').[13]
Layunin ng pagtukoy at pagtama sa error (Ingles: error detection and correction, EDAC), o pagkokodigo sa daanan (Ingles: channel coding), na masiguro na maipapadala ang impormasyon mula sa nagpadala nito papunta sa pinadalhan nito nang kumpleto at maayos. Ginagamit ito sa pagpapadala ng datos, tulad halimbawa ng sa internet. Hindi maasahan salahat ng pagkakataon ang mga daanan ng impormasyon, kaya naman ginawa ang ilang mga algoritmo para rito, tulad halimbawa ng kodigong Hamming at Reed-Solomon. Inuulit ng mga algoritmo angnilang bahagi ng impormasyon upang masiguro na makakarating ito sa papadalhan kahit na magkaproblema ito sa daan. Halimbawa, ginagamit sa mga CD ang kodigong Reed-Solomon upang ayusin ang mga datos na nawala o nasira dahil sa mga pagkiskis.
Kriptograpiya ang pag-aaral sa mga paraan upang maitago ang isang impormasyon at masiguro ang seguridad ng komunikasyon sa pagitan ng nagpapadala at pinapadalhan nito.[14] Bagamat matagal na ang pag-aaral na ito, ginagamit na ngayon sa modernong kriptograpiya ang mga kompyuter upang gawin ang mga paraang hindi makokompyut nang mano-mano ng sinumang tao. Nakasalalay ang mga paraang ito sa ideya ng pagpapalagay sa kahirapang makompyut. Gayunpaman, hindi nito ginagarantiya na hindi ito mabubuksan. Dahil sa pagbilis ng pag-abante ng teknolohiya tulad ng mga superkompyuter, kinakailangan pa ring ma-update ang mga paraang ito upang manatiling hindi ito makokompyut nang maayos at mabilis.[15]
Kodigong linya (Ingles: line code) ang tawag sa boltahe, daloy, o mga photon na ginagamit para kumatawan sa ipinapadalang digital na datos sa isang daanan ng komunikasyon o di kaya'y isinusulat sa isang taguan ng datos. Ginagawa nitong digital na signal ang mga datos na nasa anyong dalawahan (Ingles: binary) upang makadaan ito sa mga linya ng pagpapadala, tulad halimbawa ng mga broadband.[16]
↑Sa wikang Filipino, "Isang Teoryang Matematikal ng Impormasyon". Pinalitan niya ang pamagat nito sa mga sumunod na paglalathala bilang "The Mathematical Theory of Information" ("Ang Teoryang Matematikal ng Impormasyon") matapos niyang mapagtanto ang kahalagahan ng kanyang gawa.[5]
Sanggunian
↑"Coding Theory" [Teorya ng Kodigo]. Wolfram Math World (sa wikang Ingles). Nakuha noong 25 Mayo 2023.
↑Immink, Kees Schouhamer (Oktubre 1999). "Reed-Solomon codes and the compact disc" [Mga kodigong Reed-Solomon at ang compact disc]. Sa Wicker, Stephen B. (pat.). Reed-Solomon Codes and Their Applications [Mga Kodigong Reed-Solomon at ang kanilang Gamit] (sa wikang Ingles). Wiley IEEE.
↑Tse, David (22 Disyembre 2020). "How Claude Shannon Invented the Future" [Paano Inimbento ni Claude Shannon ang Hinaharap]. Quanta Magazine (sa wikang Ingles). Nakuha noong 31 Mayo 2023.
↑Golay, Marcel J. E. (1949). "Notes on Digital Coding" [Mga Notes sa Digital na Pagkokodigo] (PDF). Proc. IRE (sa wikang Ingles). 37: 657. Inarkibo mula sa orihinal(PDF) noong 2023-05-14. Nakuha noong 2023-06-11.
↑Pegg Jr., Ed; Terr, David; Weisstein, Eric W. "Golay code" [Kodigong Golay]. Wolfram Mathworld (sa wikang Ingles). Nakuha noong 31 Mayo 2023.
↑Robertson, Edmund F. "Richard W. Hamming". ACM Turing Award (sa wikang Ingles). Nakuha noong 9 Hunyo 2023.
↑Rivest, Ronald L. (1990). "Cryptography". Sa J. Van Leeuwen (pat.). Handbook of Theoretical Computer Science [Handbook ng Teoretikal na Agham Pangkompyuter] (sa wikang Ingles). Bol. 1. Elsevier.
↑Goldwasser, Shafi; Kalai, Yael Tauman (19 Disyembre 2015). "Cryptographic Assumptions: A Position Paper". Lecture Notes in Computer Science (conference paper) (sa wikang Ingles). Nakuha noong 10 Hunyo 2023.