ตัวกรองของบลูม (อังกฤษ: Bloom Filter) ถูกคิดขึ้นโดย ในปี พ.ศ. 2513 เป็นวิธีหนึ่งในการตรวจสอบข้อมูลที่อยู่ในเซตว่ามีข้อมูลที่เราสนใจอยู่ในนั้นหรือไม่ ซึ่งวิธีนี้จะหาคำตอบได้ด้วยเวลาคงตัว O(1) กล่าวคือ เวลาที่ใช้ในการตรวจสอบไม่ขึ้นกับจำนวนข้อมูล แต่ถ้าผลการตรวจสอบออกมาเป็นจริง (มีข้อมูลตัวที่เราสนใจอยู่ในเซต) อาจจะเป็นคำตอบที่ผิด แต่ถ้าผลการตรวจสอบออกมาเป็นเท็จ (ไม่มีข้อมูลตัวนั้นอยู่ในเซต) จะเป็นคำตอบที่ถูกต้องอย่างแน่นอน
กระบวนการทำงาน
การทำงานจะคล้ายกับการกรอง โดยตะแกรงที่ใช้กรองจะมีอยู่หลายช่อง ในที่นี้เรียกว่าช่องหมายเลข 1, 2, 3, ...,10 โดยการตรวจสอบว่าข้อมูลตัวนั้นจะไหลผ่านตัวกรองช่องไหน จะใช้ฟังก์ชันแฮชซึ่งใช้เวลาในการทำงานคงตัว ดังนั้นการค้นหาจึงใช้เวลาคงตัว O(1) และตัวกรองแต่ละช่องจะมีขนาดเพียง 1 บิต (บันทึกแค่ว่าเคยมีข้อมูลไหลผ่านรึยัง? ถ้าเคยเป็น 1 ไม่เคยเป็น 0)
การเพิ่มข้อมูล
นำข้อมูลนั้นไปผ่านเครื่องกรอง แล้วทำการบันทึกไว้ว่าช่องไหนที่ข้อมูลนั้นไหลผ่าน เช่น ถ้าเพิ่ม A แล้วพบว่า A ไหลผ่านช่องหมายเลข 1, 2, 5 ได้ ก็บันทึกไว้ว่าช่องหมายเลข1, 2, 5 เคยมีข้อมูลไหลผ่านแล้ว
การลบข้อมูล
ถ้ามีการลบข้อมูลออก เราจะไม่สามารถแก้ข้อมูลที่ตัวกรองได้ เพราะตัวกรอง 1 ช่องอาจมีข้อมูลไหลผ่านหลายตัว ไม่รู้ว่าตัวไหนบ้าง (จริง ๆ แล้วสามารถแก้ข้อมูลของตัวกรองได้ โดยการหยิบข้อมูลทุกตัวมาเข้าเครื่องกรองใหม่อีกรอบ โดยหยิบมาทีละตัว แต่เสียเวลานานมาก) ดังนั้นวิธีนี้จึงไม่เหมาะกับการใช้งานที่มีการลบข้อมูลออกบ่อย ๆ
การค้นข้อมูล
นำข้อมูลนั้นไปผ่านเครื่องกรอง แล้วตรวจสอบว่าช่องที่ข้อมูลนี้สามารถไหลผ่านได้ เคยถูกข้อมูลตัวอื่นไหลผ่านมาก่อนรึเปล่า? ถ้ายังไม่เคย ก็จะรู้ได้ทันทีว่าข้อมูลที่กำลังค้นนั้น ไม่ได้อยู่ในที่เก็บข้อมูล เช่น ถ้าค้น B แล้วพบว่าไหลผ่านช่องหมายเลข 2, 5, 7 ได้ ก็ไปตรวจสอบช่องหมายเลข 2, 5, 7 ว่าเคยมีข้อมูลไหลผ่านรึยัง? ถ้ามีอันใดอันหนึ่งไม่เคยมีข้อมูลไหลผ่าน ก็ตอบได้เลยว่า "ค้นไม่เจอ" แต่ถ้าทุกช่องที่ B ไหลผ่านเคยมีข้อมูลไหลผ่านมาแล้วก็แปลว่า "ค้นเจอ"
แต่ความจริงวิธีนี้อาจเกิดข้อผิดพลาดขึ้นได้ เช่น ถ้าเพิ่ม A (ผ่านช่องหมายเลข 1, 2, 5) และเพิ่ม B (ผ่านช่องหมายเลข 3, 4, 7) จากนั้นค้นหา C (ผ่านช่องหมายเลข 3, 4, 5) จะพบว่า ตัวกรองทั้ง 3 ช่องเคยถูกลอดผ่านแล้ว แต่ C ยังไม่ได้ถูกเพิ่มเข้ามา ถ้าเกิดเหตุการณ์แบบนี้ก็จะผิด ดังนั้นถ้าค้นแล้วเจอไม่ได้แปลว่ามีข้อมูลนั้นอยู่จริง ๆ ต้องไปตรวจสอบอีกทีว่ามีอยู่จริง ๆ หรือไม่ แต่ถ้าค้นแล้วไม่เจอ สามารถสรุปได้ทันทีว่าไม่เจอ
ประสิทธิภาพ
- การเพิ่มข้อมูล ใช้เวลาคงตัว O(1) เนื่องจากใช้ฟังก์ชันแฮช
- การลบข้อมูล ใช้เวลา O(n) เพราะต้องหยิบข้อมูลทุกตัวมาผ่านตัวกรองอีกรอบ
- การค้นข้อมูล ถ้าค้นแล้วเจอ ก็ต้องไปตรวจสอบดูอีกทีว่ามีอยู่จริง ๆ หรือไม่ ทำให้เสียเวลา O(n) หรือ O(log n) (แล้วแต่ชนิดของการแฮชโครงสร้างข้อมูล) แต่ถ้าค้นแล้วไม่เจอ สามารถสรุปได้ทันทีว่าไม่เจอ O(1)
ประสิทธิภาพของวิธีนี้ขึ้นกับจำนวนของฟังก์ชันแฮชที่ใช้ และจำนวนของตัวกรอง โดยการกำหนดจำนวนเหล่านี้ต้องใช้หลักของความน่าจะเป็นเข้ามาช่วย เพื่อลดโอกาสที่จะเกิดเหตุการณ์ผิดพลาดดังเช่นกรณีค้นหา C แล้วเจอ แต่ที่จริงแล้วต้องไม่เจอ ซึ่งถ้าโอกาสของการเกิดกรณีแบบนี้มีน้อยมาก ๆ ก็จะสามารถละทิ้งการตรวจสอบรอบที่ 2 ได้
อ้างอิง
- Donald Knuth. . stanford.edu (2nd ed.). คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2012-03-06. สืบค้นเมื่อ 2011-09-24.
- ภาคภูมิ ยิ้มสุขอนันต์ (14 กุมภาพันธ์ 2011). BloomFilter – โดยทาง YouTube.
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
twkrxngkhxngblum xngkvs Bloom Filter thukkhidkhunody inpi ph s 2513 epnwithihnunginkartrwcsxbkhxmulthixyuinestwamikhxmulthierasnicxyuinnnhruxim sungwithinicahakhatxbiddwyewlakhngtw O 1 klawkhux ewlathiichinkartrwcsxbimkhunkbcanwnkhxmul aetthaphlkartrwcsxbxxkmaepncring mikhxmultwthierasnicxyuinest xaccaepnkhatxbthiphid aetthaphlkartrwcsxbxxkmaepnethc immikhxmultwnnxyuinest caepnkhatxbthithuktxngxyangaennxnkrabwnkarthanganphaphtwxyang twkrxngkhxngblum inphaphmi x y aela z xyuinestkhxngkhxmul luksraetlasichitaaehnngkhxngchxngthi x y z lxdphan caehnwaluksrkhxng w chiipyngchxngthimielkh 1 1 0 tamladb sunghmaykhwamwa w imidxyuinestkhxngkhxmul ephraatwkrxng 3 chxngthi w ihlphanmibangxnepn 0 khuxyngimekhymikhxmulihlphan sahrbphaphtwxyangniichfngkchnaehch 3 fngkchn aelaichtwkrxng 18 chxng karthangancakhlaykbkarkrxng odytaaekrngthiichkrxngcamixyuhlaychxng inthinieriykwachxnghmayelkh 1 2 3 10 odykartrwcsxbwakhxmultwnncaihlphantwkrxngchxngihn caichfngkchnaehchsungichewlainkarthangankhngtw dngnnkarkhnhacungichewlakhngtw O 1 aelatwkrxngaetlachxngcamikhnadephiyng 1 bit bnthukaekhwaekhymikhxmulihlphanruyng thaekhyepn 1 imekhyepn 0 karephimkhxmul nakhxmulnnipphanekhruxngkrxng aelwthakarbnthukiwwachxngihnthikhxmulnnihlphan echn thaephim A aelwphbwa A ihlphanchxnghmayelkh 1 2 5 id kbnthukiwwachxnghmayelkh1 2 5 ekhymikhxmulihlphanaelw karlbkhxmul thamikarlbkhxmulxxk eracaimsamarthaekkhxmulthitwkrxngid ephraatwkrxng 1 chxngxacmikhxmulihlphanhlaytw imruwatwihnbang cring aelwsamarthaekkhxmulkhxngtwkrxngid odykarhyibkhxmulthuktwmaekhaekhruxngkrxngihmxikrxb odyhyibmathilatw aetesiyewlananmak dngnnwithinicungimehmaakbkarichnganthimikarlbkhxmulxxkbxy karkhnkhxmul nakhxmulnnipphanekhruxngkrxng aelwtrwcsxbwachxngthikhxmulnisamarthihlphanid ekhythukkhxmultwxunihlphanmakxnruepla thayngimekhy kcaruidthnthiwakhxmulthikalngkhnnn imidxyuinthiekbkhxmul echn thakhn B aelwphbwaihlphanchxnghmayelkh 2 5 7 id kiptrwcsxbchxnghmayelkh 2 5 7 waekhymikhxmulihlphanruyng thamixnidxnhnungimekhymikhxmulihlphan ktxbidelywa khnimecx aetthathukchxngthi B ihlphanekhymikhxmulihlphanmaaelwkaeplwa khnecx aetkhwamcringwithinixacekidkhxphidphladkhunid echn thaephim A phanchxnghmayelkh 1 2 5 aelaephim B phanchxnghmayelkh 3 4 7 caknnkhnha C phanchxnghmayelkh 3 4 5 caphbwa twkrxngthng 3 chxngekhythuklxdphanaelw aet C yngimidthukephimekhama thaekidehtukarnaebbnikcaphid dngnnthakhnaelwecximidaeplwamikhxmulnnxyucring txngiptrwcsxbxikthiwamixyucring hruxim aetthakhnaelwimecx samarthsrupidthnthiwaimecxprasiththiphaphkarephimkhxmul ichewlakhngtw O 1 enuxngcakichfngkchnaehchkarlbkhxmul ichewla O n ephraatxnghyibkhxmulthuktwmaphantwkrxngxikrxbkarkhnkhxmul thakhnaelwecx ktxngiptrwcsxbduxikthiwamixyucring hruxim thaihesiyewla O n hrux O log n aelwaetchnidkhxngkaraehchokhrngsrangkhxmul aetthakhnaelwimecx samarthsrupidthnthiwaimecx O 1 prasiththiphaphkhxngwithinikhunkbcanwnkhxngfngkchnaehchthiich aelacanwnkhxngtwkrxng odykarkahndcanwnehlanitxngichhlkkhxngkhwamnacaepnekhamachwy ephuxldoxkasthicaekidehtukarnphidphladdngechnkrnikhnha C aelwecx aetthicringaelwtxngimecx sungthaoxkaskhxngkarekidkrniaebbniminxymak kcasamarthlathingkartrwcsxbrxbthi 2 idxangxingDonald Knuth stanford edu 2nd ed khlngkhxmulekaekbcakaehlngedimemux 2012 03 06 subkhnemux 2011 09 24 phakhphumi yimsukhxnnt 14 kumphaphnth 2011 BloomFilter odythang YouTube bthkhwamkhxmphiwetxr xupkrntang hruxekhruxkhayniyngepnokhrng khunsamarthchwywikiphiediyidodykarephimetimkhxmuldkhk