Page 1

ล้ วงความลับการบีบอัดไฟล์ เชือว่าบรรดาผู ้ ใช้ คอมพิวเตอร์ หลายคนคงรู ้ จักไฟล์ทีผ่านการบีบอัดเอาไว้(ไฟล์ที นามสกุล .Zip นันแหละครับ) กันแล้ ว และคงจะทราบดีอยู่แล้ วว่าสาเหตุทีเราทําการบีบอัด ไฟล์นั น ก็เพือลดขนาดของไฟล์ลงเพือให้ การใช้ งานเนื อทีเก็บข้ อมูลของสือบันทึกข้ อมูลชนิด ต่างๆ เช่น ฮาร์ ดดิสก์ หรื อซีดีรอมเป็ นไปอย่างมีประสิทธิภาพมากขึ นเพราะการทีเราเก็บ ข้ อมูลในรูปของซิปไฟล์ ทําให้ เราสามารถบรรจุไฟล์ลงในสือบันทึกข้ อมูลได้ ในปริ มาณข้ อมูลที มากขึ น ไม่ เพียงแต่ซิปไฟล์ (Zip) จะมีประโยชน์ต่อการเก็บลง บนสือบันทึกข้ อมูลเท่านั นทั งในแง่ของการใช้ งาน อินเทอร์ เน็ตในด้ านของความเร็ วการส่งถ่ายข้ อมูลจากการ ดาวน์โหลด หรื ออัพโหลดไฟล์ทีอยู่ในรูปไฟล์นั นจะดีกว่า ไฟล์ทีไม่มีการซิป (จะเห็นได้ ชัดในกรณีทีเราเชือมต่อ อินเทอร์ เน็ต ซึงมีความเร็ วในการเชือมต่อช้ า) เมือเราทําการบีบอัดไฟล์แล้ ว เราจะคลาย หรือ Unzip ไฟล์ทีทําการบีบอัดเอาไว้ ได้ อย่างไร? ซึงก็ใช้ โปรแกรมทีชือ WinZip นันแหละ บางคนอาจจะเริ ม สงสัยแล้ วใช่ไหมว่า แล้ วบทความเรื องนี กําลังจะพูดถึงอะไรผมไม่ได้ มาเล่าเรื องการใช้ งาน โปรแกรม WinZip หรอกครับ เพราะต่างก็คงรูว้ ิธีใช้ อยู่แล้ ว แต่ผมจะพูดถึงกลไกการ ทํางานของโปรแกรมบีบอัดไฟล์ ทีทําให้ ไฟล์ต่างๆ สามารถถูกบีบอัดเอาไว้ ให้ มีขนาดไฟล์เล็ก ทีสุดนั นมันทําได้ อย่างไร จากนี ไปเราจะมาทําความเข้ าใจกับกระบวนการบีบอัดไฟล์ทีเกิดขึ นกันว่ามีกลไกและ หลักการอย่างไร? ค้ นหาสิงหรื อข้ อมูลทีซํ าๆ กันในไฟล์การบีบอัดไฟล์ เปรี ยบเหมือนการลดจํานวนบิต (bit) และไบต์ (byte) ของข้ อมูลลง และการคลายไฟล์หรื อ Unzipไฟล์ ก็คือการสร้ างข้ อมูล ขึ นมาใหม่จากบิตหรื อไบต์ ข้ อมูลทีถูกลดจํานวนลงไปในตอนแรก โดยจะต้ องสร้ างให้ ไฟล์ข้อมูลนั นๆเหมือนต้ นฉบับเดิม


ขั นตอนทีโปรแกรมบีบอัดไฟล์ใช้ ในการลดขนาดของไฟล์ลง ก็คือการค้ นหา "ข้ อมูล" ที ปรากฏซํ าๆ ภายในไฟล์ต้นฉบับ เพราะไฟล์ส่วนมากทีใช้ กับคอมพิวเตอร์ จะประกอบด้ วย ข้ อมูลซํ าๆกันเป็ นจํานวนมาก หลังจากค้ นเจอข้ อมูลทีซํ าแล้ วเจ้ าโปรแกรมทีใช้ ในการบีบอัด ไฟล์จะทําการกําจัดข้ อมูลทีซํ าๆ นั นออกไป เพือความเข้ าใจมากขึ นผมจะยกตัวอย่างข้ อมูลที เป็ นประโยคสุดฮิตซึงบางคนอาจจะเคยได้ ยินมาแล้ ว คือ "Ask not what your country can do for you ask what you can do for your country." (อย่าถามว่าประเทศชาติจะให้ อะไรแก่ท่าน แต่จงถามตัวเองว่าท่านจะทําอะไร ให้ ประเทศชาติบ้าง) ถ้ าใครเคยได้ ยินมาก่อน ก็จะทราบดีว่าเป็ นสุนทรพจน์ ของจอห์น เอฟ เคเนดี อดีตประธานาธิบดีสหรัฐอเมริ กาผู ้ ล่วงลับไปแล้ ว ต่อไปนี ผมจะเรี ยกชือแบบย่อๆคือ เจเอฟเค จากคํากล่าวนี จะพบว่ามีคําในประโยคทั งหมด 17 คํา ซึง เกิดจากตัวอักษรทั งหมด 61 ตัว, มีช่องว่างหรื อ space 16ช่อง, มีเส้ นประหนึงเส้ นประ และมีจุด full stop 1 จุด สมมติว่า แต่ละส่วนประกอบย่อยๆ ทีกล่าวมาจะใช้ เนื อทีในหน่วยความจํา1 หน่วยความจําสําหรับแต่ละส่วนประกอบย่อย ดังนั นเราจึงได้ ขนาดของไฟล์ทั งหมด(Total file size) เป็ น 79 หน่วยความจํา เป็ นทีทราบดีว่า ขั นตอนทีโปรแกรมบีบอัดไฟล์ใช้ ในการลดขนาดของไฟล์ลงก็คือการ ค้ นหา "ข้ อมูล" ทีปรากฏซํ าๆ ภายในไฟล์ต้นฉบับ คําถามคือประโยคสุดฮิตของเจเอฟเค มี ข้ อมูลหรื อคําอะไรบ้ างทีปรากฏซํ าๆกันบ้ าง ? ก็คําพวกนี ไงครับทีทําให้ ขนาดของไฟล์ใหญ่โต โดยไม่จําเป็ น ask มี 2 คําในประโยค what มี 2 คําในประโยค your มี 2 คําในประโยค country มี 2 คําในประโยค


can มี 2 คําในประโยค do มี 2 คําในประโยค for มี 2 คําในประโยค you มี 2 คําในประโยค

ถ้ าเราไม่สนใจตัวอักษรตัวเล็ก หรื อตัวใหญ่ทีปรากฏในข้ อความ พิจารณาอย่างคร่ าวๆ จะ พบว่าจะมีคําซํ าๆทีเกิดขึ นในประโยครวมแล้ วมากกว่าครึงของจํานวนคํา (ข้ อมูล) ทั งหมดใน ประโยค จากคําทั ง 9 คําทีเกิดขึ นซํ าๆกันนันคือคําว่า -- ask, not, what, your, country, can, do, for, you คําพวกนี ได้ บอกให้ รู ้ ถึงใจความข้ อมูลส่วนมากทีเรา ต้ องการแล้ ว การทีจะสร้ างข้ อมูลข้ อความอีกครึงหนึงของประโยคนั นเราจะพิจารณาไปทีคํา ชุดแรกทีมีขนาดครึงหนึงของประโยคทั งหมดโดยจะทําการใส่ช่องว่างระหว่างคํา และการเว้ น วรรคตอนของประโยคเข้ าไปในการบีบอัดข้ อมูลนี จากนี ไปเราจะมาดูกันว่าระบบการบีบอัด ไฟล์จะทําสิงทีกล่าวมานีได้ อย่างไร กลไกค้ นคําจากฐานข้ อมูลดิกชันนารี ของโปรแกรม พื นฐานในการบีบอัดไฟล์ของโปรแกรมบีบอัดไฟล์จะใช้ หลักการอัลกอริ ธึมพื นฐานทีเรี ยกว่า LZ adaptive dictionary-based algorithm โดยที LZ ก็ คือชือของนาย Lempe lและนาย Ziv ซึงเป็ นผู ้ ที คิดค้ นอัลกอลิธมึ พื นฐานทีใช้ ในการบีบอัดข้ อมูลทีกล่าวถึงนี ส่วนคําว่า dictionary นั นจะอ้ างถึงวิธีในการทําบัญชี รายชือของข้ อมูลแต่ละชิ นสําหรับระบบในการจัดเตรี ยม ดิกชันนารี นั นจะแตกต่างกันไปในแต่ละโปรแกรมบีบอัดไฟล์แต่ดิกชันนารี ของแต่ละโปรแกรม นั นยังมีจํานวนลิสต์ข้อมูลคําแบบพื นฐานในดิกชันนารี ทีเหมือนๆกัน ขอกลับมาทีวลีสุดฮิตของเจเอฟเคอีกทีครับ เมือเราจะทําการบีบอัดข้ อมูลอันนี เริ มต้ น จากการดึงเอาคําทีซํ ากันออกมาแล้ วใส่เลขดัชนี(index) ให้ กับคํานั นหลังจากทีกําหนด


เลขดัชนีให้ กับคําทีเราพบว่าเป็ นคําซํ าของคําทั งหมดในประโย คข้ อมูลแล้ วคําถามคือ แล้ วเรา จะทําอะไรต่อไป ? ดูตัวอย่างข้ างล่างนี นะครับ

นีคือคําซํ าทั งหมดหลังจากทีกําหนดเลขดัชนีให้ กับมันแล้ ว(เลขดัชนีคือเลข 1, 2, 3...ไป เรื อยๆ จนถึง 8) 1. ask 2. what 3. your 4. country 5. can 6. do 7. for 8. you ดังนั นจากประโยคทีเป็ น original คือ "Ask not what your country can do for you -- ask what you can do for your country." เราจะ ได้ ประโยคใหม่ซึงทําการแมปปิ งกับเลขดัชนีแล้ วคือ "1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4." คําถามต่อมาก็คือ เราสามารถสร้ างข้ อมูลทีเป็ นตัวข้ อมูลก่อน Zip จากข้ อมูลทีได้ แมปด้ วยเลขดัชนีซึงป็ นตัวเลขทีเรี ยงต่อกัน เป็ นพืดแบบนี ได้ อย่างไร ? ง่ายมากครับ...เมือทุกอย่างถูกเซตไว้ เป็ นระบบ ดังนั นเราจึง สามารถสร้ างข้ อมูลก่อน Zip ขึ นมาใหม่โดยใช้ ดิกชันนารี และตัวเลขแพทเทิร์นทีเรามีอยู่ นันเอง จะสังเกตเห็นได้อย่างหนึงตอนทีทําการดาวน์โหลดไฟล์ นันคือไฟล์ทีเราดาวน์โหลดมา จะถูกขยายหรื อคลายออกได้ ด้วยตัวเอง โดยเจ้ าโปรแกรมทีเรี ยกว่า Expansion


program ซึงเจ้ าโปรแกรมชนิดนี ก็จะใช้ ฐานข้ อมูลในดิกชันนารี และตัวเลขดัชนีแพทเทิร์น ของคําทีเราได้ กําหนดไว้ สําหรับไฟล์ทีถูกบีบอัดเอาไว้ บางไฟล์ก็สามารถทําการ Unzipได้ ด้วยตัวของมันเอง เพราะ โปรแกรมเมอร์ ได้ รวมเอาโปรแกรม Expansion program เข้ าไว้ กับไฟล์ขณะทีถูก บีบอัดในตอนแรกแล้ ว ซึงมันจะทําการสร้ างไฟล์ต้นฉบับขึ นด้ วยตัวเองทันทีทีตัวมันเองถูก ดาวน์โหลดโดยผู ้ ใช้ ผ่านทางอินเทอร์ เน็ต กลับมาดูทีโค้ ดของข้ อมูลก่อน Zip ซึงผ่านกระบวนการบีบอัดไฟล์แล้ ว เจ้ าโค้ ด "1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4." นี มันช่วยให้ เราประหยัดเนื อทีใน การเก็บได้ แค่ไหนกัน ? แน่นอนครับว่าการเก็บข้ อมูลทีเป็ นโค้ ดแบบนี ย่อมเก็บได้ ประหยัดเนื อ ทีกว่าการเก็บประโยค "Ask not what your country can do for you -- ask what you can do for your country." ลงหน่วยความจําแน่ๆ แต่ อย่าลืมนะครับว่าเราต้ องแนบเอาข้ อมูลดิกชันนารี สําหรับโค้ ด "1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4." แปะเอาไว้ กับโค้ ดนี ด้ วย มิฉะนั นเราจะไม่สามารถถอดโค้ดทีทํา การเข้ ารหัสนี ได้ จากทีกล่าวมานั นเป็ นหลักการเบื องต้ นของการบีบอัดไฟล์เท่านั แต่ น ในความเป็ นจริ ง แล้ ว ไฟล์ทีมีรายละเอียดแตกต่างกันนั นต้ องการวิธีการบีบอัดทีซับซ้ อนแตกต่างกันออกไปเรา จะย้ อนกลับไปทีวลีของเจเอฟเคอีกครั ง เนืองจากเราใช้ แนวความคิดในการเก็บข้ อมูลทีว่า ทุกๆ 1 อักขระ และทุกๆ 1 ช่องว่างระหว่างคําจะใช้ พื นทีในหน่วยความจํา1 หน่วยความจําสําหรับแต่ละตัวอักขระและช่องว่างระหว่างคํา เราทราบดีว่าวลีของเจเอฟเคนั น กินเนื อทีของหน่วยความจําทั งหมด79 หน่วย สําหรับวลีนี ทีผ่านการZip แล้ วจะเหลือการใช้หน่วยความจําเพียงแค่ 37 หน่วยความจํา (รวมถึงช่องว่างระหว่างตัวอักษรด้ วย) และหน่วยความจําสําหรับเก็บ ดิกชันนารี (คําอ้ างอิงและตัวเลขดัชนี) เพือใช้ ช่วยในการสร้ างไฟล์ขึ นมาใหม่จะใช้ หน่วยความจํา 37 หน่วยความจํา ดังนั นเราจะได้ ไฟล์ทีมีขนาดรวมแล้ วคือ37+37=74 หน่วยความจํา ซึงจะเห็นได้ ว่ามันไม่ได้ มีขนาดทีลดลงจากไฟล์ต้นฉบับมากนัก (ต้ นฉบับใช้


หน่วยความจําทั งหมด 79หน่วย) เพราะนีเป็ นตัวอย่างทีเราได้ จาการยกประโยคของเจเอฟเค มาเพียงแค่ประโยคเดียวเท่านั น แต่ถ้าเราทําการ Zip สุนทรพจน์ทั งหมดทีเจเอฟเคได้ กล่าว เอาไว้ โปรแกรม Zip ไฟล์จะพบข้ อความ และคําซํ าๆ รวมถึงช่องว่างอีกมากมาย ดังนั นเรา จึงต้ องหาวิธีทีจะทําให้ ดิกชันนารี ทํางานได้ อย่างมีประสิทธิภาพในการ Zip และ Unzip ไฟล์ ซึงจะทําให้ ไฟล์ทีผ่านการบีบอัดแล้ วมีขนาดทีเล็กลงจริ งๆ

การค้ นหารูปแบบในไฟล์ต้นฉบับทีต้ องการบีบอัด จากตัวอย่างทีผมได้ กล่าวถึง ดูเหมือนว่าการบีบอัดไฟล์เป็ น เรื องไม่ยากนักเพราะว่าเราแค่ค้นหาคําซํ าออกมาแล้ ววางมัน ลงไปในดิกชันนารี เท่านั นเองแต่ทว่าในกรณีของโปรแกรมบีบ อัดไฟล์ในการทํางานจริ งๆ แล้ ว ตัวโปรแกรมจะมีกลวิธีที ค่อนข้ างแตกต่างออกไปจากทีกล่าวมา เพราะโปรแกรมบีบ อัดไฟล์ไม่มีแนวความคิดเกียวกับการแบ่งคําเหมือนทีเรายกตัวอย่าง (มันไม่รู ้ จักการแบ่งคํา) แต่โปรแกรมบีบอัดไฟล์จะทําการมองหาแค่ "รูปแบบ (patern)" เท่านั นเพือทีจะทําการ ลดขนาดของไฟล์ให้ ได้ มากทีสุดเท่าทีมันจะทําได้ มันจะทําการมองหาและเลือกรูปแบบของ ข้ อมูลด้ วยความระมัดระวังแล้ ววางลงไปในดิกชันนารี ดังนั นการบีบอัดไฟล์สําหรับข้ อมูล ต้ นฉบับทีมีความแตกต่างกันก็จะได้ ดิกชันนารี ทีแตกต่างกันด้ วย และถ้ าโปรแกรมบีบอัดไฟล์ ต้ องการทีจะบีบอัดวลีทีกล่าวโดยเจเอฟเคมันจะยังไม่สนใจข้ อมูลหรื อคําทีเจอว่าซํ ากันในครั ง แรกทีมันค้ นหา สําหรับคําว่า "ask not what your," รูปแบบในประโยคทีกล่าวถึงนี มีคําที ซํ ากันทีโปรแกรมบีบอัดไฟล์พบก็คืออักษร t ตามด้ วยช่องว่างในคําว่า "not" และ "what" เมือโปรแกรมบีบอัดไฟล์ทําการเขียนคําทีกล่าวมานี ลงในดิกชันนารีมันจะทําการ เขียนเลข 1 สําหรับตัวอักษร t แต่ละตัวตามด้ วยช่องว่างทีอยู่หลัง t แต่ทีกล่าวมานี เป็ นแค่ ประโยคสั นๆซึงไม่คุ ้ มค่าทีจะทําเช่นนั นดังนั นโปรแกรมจะเขียนคําว่าnot ไปเลย


สามารถลดขนาดของข้ อมูลได้ มากแค่ไหน ? แล้ วระบบทีได้ กล่าวมานี มันดีอย่างไร? เนืองจากว่าอัตราส่วนในการลดขนาดของไฟล์ จะ ขึ นอยู่กับปั จจัยต่างๆทั งขนาดของไฟล์เอง, ชนิดของไฟล์และแบบแผนหรื ออัลกอริ ธึมที โปรแกรมบีบอัดไฟล์ใช้ ในการบีบอัดไฟล์ โดยส่วนมากแล้ วสําหรับภาษาต่างๆ ในโลกของเรา เราพบว่าตัวอักษรและคําจะอยู่ รวมด้ วยกันด้ วยรูปแบบหรื อแพทเทิร์นทีเหมือนกัน ดังนั นไฟล์ข้อมูลทีอยู่ในรูปไฟล์อักขระหรื อ เท็กซ์ไฟล์จะถูกบีบอัดให้ ได้ ขนาดเล็กกว่าไฟล์ชนิดอืนๆ เพราะอัตราการเกิดตัวซํ าของอักษร และข้ อความหรื อคําภายในไฟล์นั นจะมีสูงมากดังนั นการลดขนาดของไฟล์ชนิดนี จะลดลงถึง 50 เปอร์ เซ็นต์ หลังจากทําการบีบอัด หรื ออาจลดลงได้ มากกว่านี สําหรับข้ อมูลของภาษาการเขียนโปรแกรมนั น(พวก syntax ทีใช้ สําหรับเขียน โปรแกรม) ส่วนมากจะมีการเขียนคําทีซํ าๆกันเสียส่วนใหญ่ เพราะว่าคําสังในการเขียน โปรแกรมนั นมีไม่มากนักซึงบ่อยๆ จะพบว่ารวมอยู่ด้วยกันในกลุ่มทีมีรูปแบบและสําหรับไฟล์ ประเภททีมีการรวมเอาข้ อมูลทีเหมือนกันแบบเดียวจํานวนมากๆ มาไว้ ด้วยกัน เช่น ไฟล์พวก กราฟิ ก หรือไฟล์พวก MP3 ไฟล์ เมือคุณใช้ ระบบอัลกอริ ธึมบีบอัดระบบนี กับไฟล์ประเภท ดังกล่าวไฟล์พวกนี จะไม่สามารถบีบอัดให้ เล็กลงได้ มากเท่าไรนักเพราะว่ารูปแบบของข้ อมูลที พบในไฟล์ชนิดนี จะไม่มีการเกิดการซํ ากันมากนักเพราะฉะนั นขนาดของไฟล์หลังจากบีบอัด แล้ วจะมีขนาดไม่แตกต่างจากไฟล์ต้นแบบมากนัก ถ้ าไฟล์มีรูปแบบของข้ อมูลทีซํ ากันมากๆจะทําให้ อัตราการลดขนาดไฟล์เพิมขึ นตาม ขนาดของไฟล์ต้นแบบ มาดูตัวอย่างกันครับ ถ้ าเรามีสุนทรพจน์ของเจเอฟเคทีมากขึ นหลายๆ หน้ า เราก็สามารถอ้ างอิงถึงรูปแบบในดิกชันนารี ของเราได้ บ่อยๆ และจะทําให้ เราได้ เนื อที เหลือมากขึ นสําหรับการเก็บไฟล์ ประสิทธิภาพนี จะขึ นอยู่กับอัลกอริ ธึมทีโปรแกรมบีบอัดไฟล์ไว้ ด้วยโปรแกรมบีบอัดไฟล์ บางตัวจะมีชุดของโปรแกรมทีทําหน้ าทีค้ นหาและดึงรูปแบบของข้ อมูลออกมาและบีบอัดไฟล์ ต้ นฉบับให้ อยู่ในรูปขนาดไฟล์ทีเล็กทีสุด สําหรับโปรแกรมบีบอัดข้ อมูลบางตัวนั นจะมี ดิกชันนารี อีกชุดหนึงซึงอาจช่วยให้ การบีบอัดไฟล์ทีมีขนาดใหญ่ให้ ทําได้ ดีขึ นแต่อาจจะไม่ดีพอ


เมือใช้ กับการบีบอัดไฟล์ต้นฉบับทีมีขนาดเล็ก ถึงกระนั นก็ตามโปรแกรมบีบอัดไฟล์ก็ใช้ แนวความคิดพื นฐานทีเหมือนๆ กันในการบีบอัดไฟล์ส่วนโปรแกรมเมอร์ ก็พยายามทีจะสร้ าง และพัฒนาระบบอัลกอริ ธึมทีดีทีสุดเพือใช้ ในการบีบอัดไฟล์ให้ ดีกว่าเดิม การลดขนาดของข้ อมูลโดยไม่ทําให้ ข้ อมูลสูญหาย ชนิดของการบีบอัดข้ อมูลทีได้ กล่าวถึงทีผ่านมาแล้ วนั นเรี ยกว่า"Lossless compression" เพราะวิธีนี เป็ นวิธีทีทําให้ เราสามารถสร้ างไฟล์ต้นฉบับขึ นมาใหม่ได้ อย่างถูกต้ องมากทีสุด การบีบอัดไฟล์แบบ Lossless compression นั นอาศัย แนวความคิดพื นฐานโดยการแตกไฟล์ข้อมูลออกแบบส่วนเล็กๆหลายๆ ส่วนสําหรับเก็บลงใน หน่วยความจําสําหรับเก็บข้ อมูลและนั นเมือต้ องการใช้ ไฟล์นั นอีกครั งจึงทําการสร้ างไฟล์ขึ นมา ใหม่จากส่วนประกอบย่อยๆ ของไฟล์ทีถูกแบ่งในตอนต้ น การบีบอัดไฟล์แบบ Lossy compression นั นจะทํางานแตกต่างจากการบีบ อัดไฟล์แบบ Lossless compression โดยทีโปรแกรมทีใช้ วิธีการบีบอัดไฟล์แบบ Lossy compression จะกําจัดบิตของข้ อมูลทีไม่จําเป็ นออกไปดังนั นจึงทําให้ ไฟล์ที ถูกบีบอัดแล้ วมีขนาดเล็กลง สําหรับ Lossy compression นั น จะใช้ มากสําหรับลดขนาดของไฟล์ทีเป็ น รูปภาพนามสกุล Bitmap ซึงเป็ น ไฟล์ทีมีขนาดใหญ่ อันถัดมาทีโปรแกรมบีบอัดไฟล์จะมองเห็นในวลีของเจเอฟเคก็คือ "ou," ซึงเป็ น ตัวอักษรทีเราพบในคําว่า "Your" และ "Country" ถ้ ากรณีคํานั นถูกพบในการบีบอัด ไฟล์เอกสารทีมีขนาดยาวๆ หลายสิบหน้ า การเขียนแพทเทิร์นหรื อรูปแบบ ทีพบนั นใน ดิกชันนารี จะทําให้ เซฟเนื อทีสําหรับเก็บข้ อมูลอย่างมากแต่ขณะทีโปรแกรมบีบอัดไฟล์ทําการ ค้ นหารูปแบบของข้ อมูลในประโยคนี มันจะค้ นหาทางเลือกทีดีทีสุดเพือสร้ างดิกชันนารี ของคํา ขึ นมา ไม่เพียงแต่คําว่า "ou" ทีซํ ากันแต่มันจะรวมถึงคําว่า"your" และ "country" ด้ วยทีซํ ากันและมันก็ซํ ากันแน่นอนสําหรับวลีทีว่า "your country" ในกรณีนี โปรแกรม บีบอัดไฟล์จะทําการเขียนทับข้ อมูลเดิมลงไปในดิกชันนารี ข้ อมูลสําหรับคําว่า "ou" ด้ วย สําหรับคําว่า "your country" แทน


วลี "can do for" ก็มีคําซํ า ในครั งแรกคําว่า can do for จะตามด้ วย "your" และอีกครั งตามด้ วยคําว่า "you" ซึงจะให้ รูปแบบของคําซํ าสําหรับประโยคว่า"can do for you" ดังนั นเราจะเขียนตัวอักษรทั งหมด15 ตัว (รวมช่องว่างด้ วย) ด้ วยตัวเลขค่าหนึง ในขณะทีคําว่า "you country" จะถูกเก็บใน Dictionary ด้ วยคําว่า "r country" เท่านั น และจะเขียนแยกจากคําว่า "can do for you"

โปรแกรมบีบอัดไฟล์จะใช้ วีธีนี ทําการมองหาบิตของข้อมูลทีซํ ากันทั งหมดออกมาและจะ ทําการคํานวณหาออกมาว่ารูปแบบข้ อมูล (คํา) ไหนทีควรเขียนลงไปในดิกชันนารี ของมัน เพือให้ ประหยัดเนื อทีเก็บข้ อมูลได้ มากทีสุดเท่าทีจะทําได้นีคือความสามารถในการเขียนซํ า (rewrite) Dictionary ทีเรี ยกว่า "adaptive" ซึงเป็ นส่วนหนึงของอัลกอริ ธึมที เรี ยกว่า LZ adaptive dictionary - based algorithm จากวีธีที โปรแกรมบีบบอัดไฟล์ใช้ ในการกระบวนการบีบอัดไฟล์ทีกล่าวมานั นค่อนข้ างทีจะซับซ้ อนมาก ไม่ใช่เรื องสําคัญทีเราจะใช้ วิธีไหนในการบีบอัดไฟล์ แต่ทีกล่าวมาข้ างต้ นเป็ นระบบการ คํานวณหาข้ อมูล (คํา) ทีทําให้ คุณสามารถบีบอัดไฟล์ได้ มีประสิทธิภาพมากกว่าการทีคุณใช้ วิธีดึงคําซํ าออกมาแต่เพียงอย่างเดียวในการใช้ รูปแบบคําทีเราดึงออกมาประโยคเต็มทั งหมด นั นเราจะรวมเอา ขีด "-" เข้ าไปด้ วย ทําให้ เราได้ ขนาดของดิกชันนารี ทีเก็บโค้ ดของคําได้ ใหญ่ ขึ นมาก เราจะได้ ดกิ ชันนารี ดังนี 1. ask 2. what 3. you 4. r_country 5. _can


และนีคือประโยคทีมีขนาดเล็กหลังจากเราทําการบีบอัดประโยคเต็มแล้ ว "1not_2345__12354" จากประโยคทีได้ ข้างต้ นจะใช้ หน่วยความจําสําหรับการเก็บข้ อมูลทั งหมด16 หน่วยความจําและดิกชันนารี ของเราจะใช้ หน่วยความจําทั งหมด 41 หน่วยความจํา ดังนั น เราจะได้ ไฟล์ทีทําการบีบอัดแล้ วมีขนาดทั งหมด57 หน่วย ความจํา (ซึงเล็กกว่าตอนแรกซึง มีขนาด 79 หน่วยความจํา) นีเป็ นเพียงแค่วิธีเดียวทียกตัวอย่างมาในการใช้ เป็ นวิธีสําหรับ บีบอัดสุนทรพจน์ของเจเอฟเค และไม่จําเป็ นว่าวิธีนี เป็ นวิธีทดีี ทีสุดในการบีบอัดไฟล์ เพราะ อาจจะมีวิธีอืนอีกทีดีกว่านี อีกครับ การบีบอัดไฟล์แบบ Lossless compression ของโปรแกรมบีบอัดไฟล์จะ ไม่สามารถทําอะไรได้ มากนักในการนําไปใช้ กับการบีบอัดไฟล์ข้อมูลรูปภาพขณะทีส่วนข้ อมูล ใหญ่ของรูปภาพดูเหมือนๆ กัน อย่างเช่น พื นทีทีเป็ นท้ องฟ้ าสีฟ้าทั งหมดของรูปซึงพิกเซลแต่ ละพิกเซลของรูปแบบนี จะมีความแตกต่างกันเล็กน้ อยมาก ดังนั นเพือบีบอัดให้ ไฟล์รูปภาพทีกล่าวดังนั นมีขนาดเล็กลงโดยการรักษาหรื อคงความ ละเอียด (Resoltion) เดิมของรูปต้ นฉบับเอาไว้ เราต้ องทําการเปลียนแค่ของสีในภาพ สําหรับพิเซลทีเรารู ้ แน่นอน ดังนั นถ้ ากรณีทีภาพมีท้องฟ้ าสีฟ้าเป็ นส่วนใหญ่โปรแกรมบีบอัด ไฟล์จะดึงข้ อมูลขึ นมาเพียงหนึงสีของท้ องฟ้ าซึงจะใช้ ในตัวแทนสําหรับทุกพิกเซลเมือโปรแกรม ต้ องการสร้ างไฟล์ขึ นมาใหม่ให้ เหมือนไฟล์ต้นฉบับค่าของพิกเซลสีท้องฟ้ าจะถูกอ้ างกลับโดย พิกเซลทุกพิกเซลของท้ องฟ้ าทีมีอยู่ ถ้ าแบบแผนการบีบอัดไฟล์ทํางานได้ อย่างดีคุณจะพบว่า ขนาดของไฟล์ทีลดลงอย่างเห็นได้ ชัด คงจะพอแค่นี ก่อนนะครับ ก็หวังว่าจากข้ อมูลทีกล่าวมา ทั งหมดคงจะพอทําให้ คุณผู ้ อ่านได้ ทราบถึงหลักการการบีบอัดไฟล์ได้ พอสมควร

data  

Ask not what your country can do for you ask what you can do for your country