pythainlp/thai_wikipedia_clean_20230101 huggingface dataset:
ในศาสตร์ของปัญญาประดิษฐ์ นั้น ขั้นตอนวิธีเชิงวิวัฒนาการ (evolutionary algorithm) เป็นหนึ่งในเรื่องของการคำนวณเชิงวิวัฒนาการ (evolutionary computation) ที่ใช้ฐานประชากรโดยทั่วไปของขั้นตอนวิธีแบบเมตาฮิวริสติกที่เหมาะสมที่สุด (metaheuristic optimization algorithm) โดยขั้นตอนวิธีเชิงวิวัฒนาการนั้น ใช้กระบวนการที่ได้รับแรงบันดาลใจมาจากการวิวัฒนาการทางชีววิทยา อันได้แก่ การสืบพันธุ์ (reproduction) การกลายพันธุ์ (mutation) การแลกเปลี่ยนยีน (recombination) และการคัดเลือก (selection) โดยจะมีผลเฉลยที่สามารถเลือกได้ (candidate solution) แทนประชากร และฟังก์ชันคุณภาพ (quality function) ในการคัดเลือกประชากรที่เหมาะสมตามสภาพแวดล้อมที่กำหนดไว้ ขึ้นตอนวิธีเชิงวิวัฒนาการนี้มักจะใช้ได้ดีสำหรับการหาผลเฉลยของปัญหาในทุกๆ ด้าน เนื่องจากสามารถพัฒนาผลเฉลยที่มีไปยังผลเฉลยที่ถูกต้องได้อย่างรวดเร็ว ทำให้มันประสบความสำเร็จในหลายๆ ด้านของปัญหา เช่น วิศวกรรม ศิลปกรรม ชีวภาพ เศรษฐศาสตร์ การตลาด พันธุศาสตร์ การค้นคว้าวิจัย การออกแบบหุ่นยนต์ วิทยาศาสตร์ด้านสังคม ฟิสิกส์ รัฐศาสตร์ และ เคมี
นอกจากการใช้งานด้านคณิตศาสตร์แล้ว ขั้นตอนวิธีและการคำนวณเชิงวิวัฒนาการยังถูกใช้เป็นข่ายงานในการทดลองในเรื่องการตรวจสอบความสมเหตุสมผลในทฤษฎีที่เกี่ยวกับการวิวัฒนาการและการคัดเลือกทางธรรมชาติ โดยเฉพาะอย่างยิ่งในข่ายของงานที่เกี่ยวข้องกับชีวประดิษฐ์ (artificial life)
กระบวนการในการออกแบบ.
ในการวิวัฒนาการทางธรรมชาติ กลุ่มของประชากรที่เป็นอิสระจากกันผ่านสภาพแวดล้อมที่มีสภาพกดดันจนทำให้เกิดการคัดเลือกทางธรรมชาติ (natural selection) แล้วเกิดการคัดเลือกประชากรที่เหมาะสม เช่นเดียวกับขั้นตอนวิธีเชิงวิวัฒนาการ เราจะสุ่มผลเฉลยที่สามารถเลือกได้ (candidate sulotion) เช่น สมาชิกของโดเมนในฟังก์ชัน ขึ้นมา แล้วใช้ฟังก์ชันคุณภาพ (quality function) เป็นตัวคัดเลือกคำตอบที่เหมาะสม ยิ่งฟังก์ชันมีมาตรฐานสูงยิ่งดี โดยเทียบจากมาตรฐานนี้ บางส่วนของผลเฉลยที่ดีกว่าจะถูกเลือกไปเป็นเมล็ดพันธุ์สำหรับรุ่นถัดไป โดยประยุกต์รูปแบบของการสืบพันธุ์ การกลายพันธุ์ให้กับมัน โดยการสืบพันธุ์นั้น ผลเฉลยที่ถูกเลือกสองตัวหรือมากกว่า (หรือเรียกได้ว่าเป็นบรรพบุรุษ) จะถูกนำมาดำเนินการ และให้ผลออกมาเป็นผลเฉลยรุ่นใหม่ (หรือเรียกได้ว่าเป็นลูก) ส่วนการกลายพันธุ์นั้น จะถูกใช้กับผลเฉลยเพียงหนึ่งตัว และผลที่ได้คือผลเฉลยรุ่นใหม่ การสืบพันธุ์และกลายพันธุ์นี้จะนำไปสู่เซ็ตของผลเฉลยรุ่นใหม่ ที่มีมาตรฐานใหม่ที่ดีกว่ารุ่นเก่า กระบวนการเหล่านี้จะถูกดำเนินการไปจนกว่าจะพบผลเฉลยที่ดีที่สุด หรือที่ถูกต้อง หรือจนกว่าการคำนวณจะถึงขอบเขตสิ้นสุด
ในกระบวนการข้างต้นนั้น มีแรงพื้นฐานสองแรงในการสร้างรากฐานให้กับระบบของการวิวัฒนาการ
ในการผสมผสานโปรแกรมประยุกต์ (application) ของความหลากหลาย (variation)และการคัดเลือก (selection) มักนำไปสู่การพัฒนาของค่าความเหมาะสม (fitness value) ในประชากรที่ต่อเนื่องกัน (consecutive population) มันง่ายที่จะเห็นว่ากระบวนการวิวัฒนาการนี้ ถูกใช้งานอย่างเหมาะสม หรืออย่างน้อย ใกล้เคียง โดยจะเห็นถึงการเข้าใกล้ค่าที่ถูกต้องเหมาะสมทุกๆ รอบของการวิวัฒนาการ
แต่อย่าลืมว่า ส่วนประกอบส่วนมากของขึ้นตอนวิธีเชิงวิวัฒนาการเป็นแบบสุ่ม ระหว่างการตัดเลือก ประชากรที่เหมาะสมกว่าจะมีโอกาสที่จะถูกเลือกมากกว่าประชากรที่ไม่เหมาะสม แต่อย่างไรก็ตาม ประชากรที่ไม่เหมาะสมก็มีโอกาสที่จะถูกเลือกมาเป็นบรรพบุรุษ หรืออยู่รอดต่อไป สำหรับการผสมใหม่ (recombination) นั้น แต่ล่ะชิ้นส่วนจะถูกนำมาผสมกันใหม่อย่างสุ่ม เช่นเดียวกันกับการกลายพันธุ์ แต่ล่ะชิ้นส่วนที่ถูกกลายพันธุ์และการวางทับในผลเฉลยจะถูกเลือกมาอย่างสุ่ม
ขั้นตอนวิธีโดยทั่วไปของขั้นตอนวิธีเชิงวิวัฒนาการสามารถดูได้จากรหัสเทียมด้านล่าง
กำหนด "ประชากร" โดยการสุ่มผลเฉลย
ประเมิณค่า ผลเฉลยแต่ล่ะตัว
ทำซ้ำจนกระทั่งเงื่อนไขถึงจุดสิ้นสุดที่น่าพอใจ{
# เลือกบรรพบุรุษ
# ผสมบรรพบุรุษเข้าด้วยกัน
# กลายพันธุ์ผลที่ได้
# ประเมิณผลเฉลยที่ได้มาใหม่
# เลือกผลเฉลยสำหรับประชากรยุคใหม่
รูปแบบต่างๆ ของขั้นตอนวิธีเชิงวิวัฒนาการ.
ขั้นตอนวิธีเชิงวิวัฒนาการมีความหลากหลายในการประยุกต์ใช้งานในปัญหาต่างๆ และการสร้างขั้นตอนวิธีขั้นมา โดยสามารถแยกออกได้ดังนี้
กลยุทธ์เชิงวิวัฒนาการ
กลยุทธ์เชิงวิวัฒนาการถูกพัฒนาขึ้นมาโดย อิงโก เรเชนเบิร์ค Ingo Rechenberg และ ฮานส์-พอลล์ ชเวอเฟล Hans-Paul Schwefel ในช่วง 1970s ในตอนแรกนั้นกลยุทธ์เชิงวิวัฒนาการถูกพัฒนามาเพื่อ
แก้ปัญหาการออกแบบทางวิศวกรรม ในเรื่อง การหาค่าเหมาะสมของรูปร่างทางอากาศพลศาสตร์ (aerodynamic shape optimization)
ลักษณะและการหาคำตอบของกลยุทธ์เชิงวิวัฒนาการ.
กลยุทธ์เชิงวิวัฒนาการมีลักษณะสำคัญดังนี้
กลยุทธ์เชิงวิวัฒนาการนำหลักการของการวิวัฒนาการทางชีวภาพมาใช้ กล่าวคือ กระบวนกาคัดเลือกตามธรรมชาติ และกฎการอยู่รอดของผู้ที่เหมาะสมที่สุด (survival of the fittest)
โดยในการทำซ้ำแต่ละครั้งจะมีการคัดเลือกเพื่อตัดคำตอบที่อ่อนแอกว่าออกไป และคำตอบที่เหลือที่มี ค่าความแข็งแรง (fitness value) สูงกว่าจะถูกนำไปทำให้แตกแล้วรวมตัวกับคำตอบอื่นๆ (recombine)
หรืออาจจะมีการเปลี่ยนแปลงค่าของคำตอบต่างๆเล็กน้อย (mutate) ทั้งการรวมตัวกับคำตอบอื่นและการเปลี่ยนแปลงค่าของคำตอบจะถูกทำไปเรื่อยๆ
เพื่อสร้างคำตอบที่เหมาะสมระดับสากล (global optimization)ในกลยุทธ์เชิงวิวัฒนาการ ตัวแปรต่างๆจะถูกแทนในรูปแบบที่ มีความยาวคงที่ และ เป็นค่าจริง ในเส้นสมมติ (fixed-length real-valued vector) แต่ละตำแหน่งในเส้นสมมติจะสอดคล้องกับลักษณะของแต่ละตัวแปร
วิธีหลักในการผลิตลูกหลานของตัวแปรในกลยุทธ์เชิงวิวัฒนาการคือ การกลายพันธุ์ของเกาส์ (Gaussian Mutation) เป็นการบวกค่าสุ่มจากการกระจายของเกาส์ (Gaussian Distribution) เข้าไปในแต่ละสมาชิกของเส้นสมมติรุ่นพ่อแม่เพื่อให้ได้เส้นสมมติรุ่นลูกดังภาพ และอีกวิธีที่ถูกใช้คือ การแตกแล้วรวมตัวกันใหม่ของสารพันธุกรรมขั้นกลาง(Intermediate Recombination) ซึ่งคือการนำเส้นสมมติพ่อ เส้นสมมติแม่มาหาค่าเฉลี่ยกัน โดยทำตัวต่อตัว เพื่อสร้างเส้นสมมติรุ่นลูกดังภาพ
&lt;br &gt;
Gaussian Mutation
Intermediate Recombination
ในการเลือกของกลยุทธ์เชิงวิวัฒนาการนั้นมีข้อจำกัดน้อยกว่าขั้นตอนวิธีเชิงพันธุกรรม (Genetic -Algorithm) และการโปรแกรมเชิงพันธุกรรม (Genetic Programming) เพราะ ลักษณะของการแทนตัวแปรเป็นเส้นสมมตินั้นสามารถสามารถหาค่าเฉลี่ยเพื่อหาเส้นสมมติรุ่นลูกได้ง่าย โดยปกติ พ่อแม่ N ตัวจะลูกเลือกอย่างสุ่มแบบเท่าเทียมกัน ไม่ขึ้นอยู่กับค่าของพ่อแม่แต่ละตัว และลูกหลานมากกว่า N ตัวจะถูกผลิตจากการแตกแล้วรวมตัวกันใหม่ของสารพันธุกรรมพ่อแม่ แล้วจะมีการเลือกผู้รอดชีวิต N ตัวโดยมีวิธีในการเลือกที่ถูกกำหนดไว้ โดยผู้รอดชีวิตสามารถถูกเลือกได้จากลูกหลานที่ดีที่สุดN ตัว หรือ จะเลือกจากทั้งพ่อแม่และลูกหลานที่ดีที่สุด N ตัวก็ได้
รหัสเทียมของกลยุทธ์เชิงวิวัฒนาการ.
Input: μ,λ,ProblemSize //จำนวนพ่อแม่,จำนวนลูก,ขนาดปัญหา
Output: S[best] //คำตอบที่ดีที่สุดของปัญหา
Population &lt;= InitialPopulation(μ,ProblemSize)
S[best] &lt;= GetBest(Population,1)
While(NotStopCondition)
children &lt;= empty set
for(i=0 to λ) //วนแก้ปัญหาตามจำนวนลูก
Parent[i] &lt;= GetParent(Population,i)
S[i] &lt;= empty set
S[iProblem] &lt;= Mutate(P[iProblem],P[iStrategy]) //เกิดการกลายพันธุ์ของปัญหา
S[iStrategy] &lt;= Mutate(P[iStrategy]) //เกิดการกลายพันธุ์ของกลยุทธ์
Children &lt;= S[i] //ได้ลูกจากการกลายพันธุ์ของรุ่นพ่อแม่
EvaluatePopulation(Children)
S[best] &lt;= GetBest(Children+S[best],1)
Population &lt;= SelectBest(Population,Children,μ)
return S[best] //ส่งค่าคำตอบที่ดีที่สุดออกไป
สัญกรณ์ของกลยุทธ์เชิงวิวัฒนาการ.
สัญกรณ์ (1+1)-ES, (1+λ)-ES, (1,λ)-ES, (µ/p,λ)- บอกถึงลักษณะของกลยุทธ์เชิงวิวัฒนาการด้วยระดับของการเลียนแบบการวิวัฒนาการทางชีวภาพที่เพิ่มมากขึ้น µ บอกถึงจำนวนทั้งหมดของพ่อแม่
pบอกถึง จำนวนของพ่อแม่ที่จะถูกรวมตัวใหม่ และ λบอกถึงจำนวนลูกหลาน กระบวนการเลือกสรร จะเกิดกับลูกหลาน (เครื่องหมาย,) หรือเกิดกับทั้งรุ่นพ่อแม่และรุ่นลูกหลาน (เครื่องหมาย+)
ตัวอย่างปัญหาที่แก้ได้โดยกลยุทธ์เชิงวิวัฒนาการ.
ปัญหาการเดินทางของพนักงานขาย (The Travelling Salesman Problem)
พนักงานขายต้องการเดินทางไปยังเมือง N เมืองโดยให้มีระยะทางสั้นที่สุด และทุกๆเมืองต้องถูกเดินทางผ่านเพียงครั้งเดียว และในตอนจบของการเดินทางพนักงานขายต้องกลับมายังเมืองแรกที่เราออกเดินทาง โดยในตัวอย่างนี้จะเป็นปัญหาการเดินทางของพนักงานขายที่สมมาตร กล่าวคือ ระยะทางระหว่างเมือง 2 เมืองนั้นไม่ขึ้นอยู่กับทิศทาง
การแก้ปัญหาการเดินทางของพนักงานขายด้วยกลยุทธ์เชิงวิวัฒนาการ
มันจำเป็นที่เราจะต้องมั่นใจว่า ความสัมพันธ์ระหว่างเหตุและผลอย่างรุนแรง (strong causality)นั้นเป็นจริง กล่าวคือ การเปลี่ยนแปลงเล็กน้อยในเส้นทางการเดินทางนั้นส่งผลกระทบเล็กน้อยต่อระยะทางในการเดินทาง กระบวนการกลายพันธุ์ 4 แบบถูกใช้ดังนี้
1. การสลับบางส่วนของเส้นทางการเดินทาง (Inversion aka Lin-2-Opt)
2. การแทรกเมืองลงไปในจุดอื่นของเส้นทางการเดินทาง (Insertion aka Or-Opt)
3. การแลกเปลี่ยนซึ่งกันและกันของเมือง 2 เมือง (Reciprocal exchange aka 2-Exchange)
4. การเลื่อนกลุ่มของเส้นทางการเดินทาง (Displacement aka Shifting)
ดังภาพตัวอย่าง
การที่แต่ละกระบวนการกลายพันธุ์ถูกใช้กับส่วนใดๆของเส้นทางการเดินทาง มันอาจจะเป็นไปได้ว่าความสัมพันธ์ระหว่างเหตุและผลอย่างรุนแรงอาจจะไม่เป็นจริง ฉะนั้นระยะทางระหว่างแต่ละเมืองกับเมืองใดๆต้องถูกพิจารณาในทุกๆครั้งที่ใช้กระบวนการกลายพันธุ์ ตัวอย่างเช่น ในการทำการสลับบางส่วนของเส้นทางการเดินทาง เฉพาะบางส่วนของเส้นทางการเดินทางระหว่างเมืองที่ติดกันเท่านั่นที่ถูกสลับ ยิ่งไปกว่านั้นกระบวนการกลายพันธุ์มีการกำหนดการรวมตัวใหม่ที่เฉพาะ เจาะจงด้วย ทำให้กระบวนการรวมตัวใหม่ในปัญหานี้แตกต่างจากการรวมตัวใหม่ของกลยุทธ์เชิงวิวัฒนาการทั่วๆไป เพราะเราต้องพิจารณาว่าการรวมตัวใหม่ต้องให้ผลลัพธ์ของเส้นทางการเดินทางที่สามารถเป็นคำตอบได้เท่านั้น ดังนั้นกระบวนการกลายพันธุ์นี้ไม่ได้มีลักษณะแบบสุ่ม แต่มีลักษณะที่กำหนดไว้แล้ว
พ่อแม่ 1 ตัวจาก R ตัวที่จะนำไปรวมตัวใหม่ถูกเลือกจากพ่อแม่เริ่มต้นแบบสุ่ม ในเส้นทางการเดินทางของพ่อแม่เริ่มต้นนี้จะมี 1เมืองถูกเลือกขึ้นมาแบบสุ่มและถูกกำหนดเป็นเมืองแรกในเส้นทางการเดินทางของตัวลูกหลาน (สมมติเรียกว่าเมือง A) สำหรับพ่อแม่แต่ละตัวใน R ตัว เมืองที่อยู่ติดซ้ายขวากับเมือง A จะถูกพิจารณา เมืองที่มีระยะทางที่ใกล้ที่สุดจะถูกเลือกจากความน่าจะเป็น 2*R และเมืองนั้นจะกลายเป็นเมืองที่ 2 ในเส้นทางการเดินทาง (เมือง B) และกระบวนการเดียวกันจะถูกกระทำกับเมืองที่อยู่ติดเมือง B เพื่อสร้างเมือง C และทำต่อไปเรื่อยๆจนจบการเดินทาง ถ้าในทุกๆครั้งของการเลือกมีความน่าจะเป็นเท่ากับ 2*R เมืองที่มีระยะทางใกล้ที่สุดย่อมต้องถูกเลือกอย่างแน่นอน
สมการผลลัพธ์ของปัญหาการเดินทางของพนักงานขาย
di,(i+1) ระยะทางระหว่างเมืองที่ i และเมืองที่ i+1 ของการเดินทาง และ dn,1 คือ ระยะทางระหว่างเมืองแรกกับเมืองสุดท้ายของการเดินทาง
Evolutionary Strategy book
แมงคีม
แมงคีม หรือ ด้วงเขี้ยวกาง หรือ ด้วงคีม เป็นแมลงปีกแข็งในวงศ์ Lucanidae ซึ่งยังแบ่งออกได้เป็นวงศ์ย่อยอีก 4 วงศ์ (ดูในตาราง) พบประมาณ 1,200 ชนิด
แมงคีมมีลักษณะเด่นคือ ในตัวผู้จะมีขากรรไกรล่างที่มีขนาดใหญ่และกางเข้าออกได้เหมือนคีมหรือกรรไกรอันเป็นที่มาของชื่อเรียก ซึ่งใช้สำหรับเป็นอาวุธในการต่อสู้กันและแย่งตัวเมียเช่นเดียวกับแมลงปีกแข็งในวงศ์ Dynastinae ขณะที่ตัวเมียจะมีขนาดและขากรรไกรเล็กกว่า มีสีลำตัวที่อ่อนกว่า แมงคีมมีขนาดโดยเฉลี่ยประมาณ 12 เซนติเมตร ขณะที่บางชนิดที่ขนาดเล็กมีความยาวเพียง 5 เซนติเมตรเท่านั้น
มีลำตัวโดยรวมค่อนข้างแบน มีหนวดแบบหักเหมือนข้อศอก โดยมีปล้องแรกยาวและปล้องต่อ ๆ ไปเป็นปล้องสั้น ๆ เรียงตัวกันในทิศทางเดียวกันแต่เป็นคนละทิศกับหนวดปล้องแรก ปล้องใกล้ส่วนปลายมีหลายปล้องที่ขยายใหญ่ขึ้นเป็นปมอาจจะประกอบไปด้วยปล้องเล็ก ๆ 3-4 ปล้อง หรือ 5-6 ปล้อง ซึ่งจำนวนปล้องที่ปลายหนวดนี้มีส่วนสำคัญในการอนุกรมวิธานด้วย
แมงคีมวางไข่และตัวหนอนเจริญเติบโตในซากไม้ผุเช่นเดียวกับแมลงปีกแข็งในวงศ์ Dynastinae แต่จะไม่วางไข่ในดิน เพราะระยะเป็นตัวหนอนจะกินอาหารจำพวกไม้ผุหรือเห็ดราที่ติดมากับไม้เหล่านั้น แตกต่างกันไปตามชนิดหรือสกุล โดยใช้เวลาฟักเป็นตัวเต็มวัยนานเป็นแรมปีเหมือนกัน
แมงคีมพบได้ทั่วโลก ปกติเป็นแมลงที่ไม่ก้าวร้าวต่อมนุษย์ ในประเทศไทยสามารถพบได้หลายชนิด อาทิ แมงคีมยีราฟ ("Prosopocoilus giraffa") ซึ่งเป็นชนิดที่มีขนาดใหญ่ มีที่มีขนาดพอ ๆ กับนิ้วมือมนุษย์ พบได้ในป่าเบญจพรรณและป่าดิบแล้งในภาคเหนือและภาคตะวันออก เป็นชนิดที่หายากใกล้สูญพันธุ์มากแล้ว และมีรายชื่อเป็นสัตว์ป่าคุ้มครองตามพระราชบัญญัติสงวนและคุ้มครองสัตว์ป่า พ.ศ. 2535 ด้วย
แมงคีมนิยมเลี้ยงเป็นสัตว์เลี้ยงใช้สำหรับต่อสู้กันเช่นเดียวกับแมลงปีกแข็งในวงศ์ Dynastinae ซึ่งอาจจะใช้ต่อสู้ด้วยกันก็ได้ และเป็นที่นิยมสะสมของนักสะสมแมลง
Lucanidae
ด้วงคีม
แมงคีมยีราฟ
แมงคีมยีราฟ, ด้วงคีมยีราฟ หรือ ด้วงคีมหยักสองต่อ  เป็นแมลงปีกแข็งชนิดหนึ่ง มีชื่อวิทยาศาสตร์ว่า "Prosopocoilus giraffa" จัดอยู่ในวงศ์แมงคีม (Lucanidae)
แมงคีมยีราฟจัดเป็นแมงคีมชนิดที่มีขนาดใหญ่ที่สุด มีจุดเด่น คือ เขี้ยวหรือขากรรไกรล่างที่ใช้เป็นอาวุธของตัวผู้ที่เรียวยาวและแลดูแข็งแรงมาก โดยอาจยาวได้ถึง 2.5-4.0 เซนติเมตร ในขณะที่ลำตัวมีความยาวทั้งหมดประมาณ 10.5 เซนติเมตรในตัวผู้ และ 7.5 เซนติเมตรในตัวเมีย ลำตัวเป็นสีน้ำตาลดำเป็นเงามัน บริเวณตรงกลางส่วนอกของขาคู่กลาง และขาคู่หลังมีหนามข้างละ 1 อัน แต่ที่ขาคู่หลังจะมีขนาดเล็กกว่า
ที่ฐานของขากรรไกรล่างมีปุ่มขนาดใหญ่ปรากฏอยู่ข้างละ 1 อัน และมีลักษณะเด่นที่สำคัญ คือ ส่วนหัวบริเวณขอบตรงกลางด้านบนจะมีปุ่มยื่นตรงไปด้านหน้า 1 คู่ ในขณะที่ตัวเมียจะมีขนาดเล็กกว่ามาก โดยที่ขากรรไกรในตัวผู้จะมีลักษณะแตกต่างออกไปตามช่วงวัยและขนาดลำตัว ซึ่งยิ่งเจริญเติบโตมากและมีขนาดใหญ่ขึ้นเท่าใด คีมหรือขากรรไกรนั้นก็จะยาวใหญ่และมีส่วนโค้งและมีปุ่มเหมือนเขี้ยวมากขึ้นด้วย
แมงคีมยีราฟพบกระจายพันธุ์ในป่าเบญจพรรณและป่าดิบแล้งของหลายประเทศในทวีปเอเชียจนถึงอินโดนีเซีย ในประเทศไทยพบได้ในป่าทางภาคเหนือและภาคตะวันออก (มีทั้งหมด 9 ชนิดย่อย-ดูในตาราง)
เป็นแมลงที่หากินในเวลากลางคืน โดยกินยางไม้ตามเปลือกไม้ของต้นไม้ใหญ่ในป่า ตัวผู้มีพฤติกรรมใช้ขากรรไกรที่ยาวใหญ่นั้นต่อสู้เพื่อป้องกันตัว และสู้กับตัวผู้ตัวอื่น ๆ เพื่อแย่งตัวเมียเพื่อผสมพันธุ์ หรือแม้แต่สู้กับด้วงในวงศ์ Dynastinae ที่ใช้เขาเพื่อการต่อสู้ได้ด้วยเช่นกัน
ในระยะที่เป็นตัวหนอน อายุการเป็นตัวหนอนของแมงคีมยีราฟจะแตกต่างออกไปตามเพศ ตัวผู้จะมีอายุราว 9 เดือน ขณะที่ตัวเมียมีอายุสั้นกว่าคือ 4-7 เดือน และตัวหนอนสามารถส่งเสียงขู่ผู้รุกรานได้ด้วย ด้วยการยกขาคู่หลังตั้งขึ้นให้ด้านข้างซึ่งเป็นแผ่นแข็งเสียดสีกับขาคู่กลางไปอย่างรวดเร็ว ซึ่งทำให้เกิดการสั่นจนมีเสียงพอรับรู้ได้
สำหรับสถานะในประเทศไทย เป็นแมลงที่หาได้ยากใกล้สูญพันธุ์ เนื่องจากการถูกจับไปเป็นสัตว์เลี้ยงและสตัฟฟ์เพื่อการสะสม และการทำลายป่าที่เป็นถิ่นที่อยู่อาศัย ทำให้แมงคีมยีราฟถูกจัดเป็นสัตว์ป่าคุ้มครองตามพระราชบัญญัติสงวนและคุ้มครองสัตว์ป่า พ.ศ. 2535 และเคยมีภาพปรากฏลงในสลากกินแบ่งรัฐบาลและแสตมป์ด้วยแต่ขณะนี้ได้มีความพยายามจากภาคเอกชนในการเพาะขยายพันธุ์ในที่เลี้ยงแล้ว ซึ่งแมงคีมยีราฟจะวางไข่ไว้ในไม้ผุเท่านั้น โดยจะไม่วางไข่ไว้ในดินเหมือนด้วงในวงศ์ Dynastinae เพราะตัวหนอนกินอาหารต่างกัน โดยจะกินไม้ผุและเห็ดราที่ติดมากับไม้นั้นด้วย
Prosopocoilus giraffa
ขั้นตอนวิธีแบบห่อของขวัญ
ขั้นตอนวิธีแบบห่อของขวัญ (อังกฤษ: Gift Wrapping Algorithm) คือวิธีในทาง เรขาคณิตเชิงคำนวณ ที่ใช้ในการคำนวณหา คอนเวกซ์ฮัลล์
ขั้นตอนวิธีแบบห่อของขวัญมีชื่อเรียกอีกอย่างหนึ่งว่า การเดินแถวของจาร์วิส (อังกฤษ: Jarvis' March) เพื่อเป็นเกียรติแก่ อาร์.เอ. จาร์วิส ผู้นำขั้นตอนวิธีนี้ออกเผยแพร่ในปี พ.ศ. 2516 (หลังจาก โรนัลด์ เกรแฮม นำเสนอเกรแฮมสแกนหนึ่งปี)
เริ่มจากให้ i = 0 และให้ p0 คือจุดสุดขีดจุดหนึ่ง ซึ่งทราบแน่นอนว่าอยู่บนคอนเวกซ์ฮัลล์ เช่น จุดบนสุด จากนั้น เลือกจุด pi+1 โดย pi+1 คือจุดที่ให้มุมกว้างที่สุดเทียบกับ Pi (อาจเป็นทิศทวนเข็มนาฬิกาหรือตามเข็มนาฬิกาก็ได้) ทำซ้ำเช่นนี้ไปเรื่อยๆ จนกว่าจะได้ ph = p0 คือวนกลับมาจนครบจุดเริ่มต้นนั่นเอง
jarvis(S) "// รับ S ที่เป็นเซทของจุด"
pointOnHull = จุดสุดขีดจุดหนึ่ง "// ตั้งค่า p0 ด้วยจุดสุดขีดจุดหนึ่ง"
i = 0 "// เริ่ม i = 0"
P[i] = pointOnHull "// เพิ่มค่า pi ลงไปในอาเรย์ของคำตอบ P ช่องที่ i"
endpoint = S[0] "// ตั้งค่าเริ่มต้นสำหรับการหาจุดต่อไปบนคอนเวกซ์ฮัลล์"
for j from 1 to |S|-1 "// ตรวจสอบทุกจุด"
if (pointOnHull.angle(S[j]) &gt; pointOnHull.angle(endpoint))
endpoint = S[j] "// ถ้าหากมุมของจุดใหม่กว้างกว่าเทียบกับจุดเดิมที่เลือกไปในรอบก่อน ให้เปลี่ยนจุดที่เลือกใหม่"
i = i+1
pointOnHull = endpoint "// ตั้งค่าจุด pi+1 ให้เป็นจุดหลักสำหรับรอบหน้า"
until endpoint == P[0] "// ทำซ้ำจนกว่าจะครบรอบ"
เนื่องจากเวลาในการหามุมสำหรับแต่ละจุดเป็นค่าคงที่ (O(1)) และการเปรียบเทียบมุมสำหรับทุกคู่จุดจะใช้เวลา O(n) สรุปว่าเราสามารถหาจุดๆหนึ่งบนคอนเวกซ์ฮัลล์ได้ภายในเวลา O(n) และหากมีจุดบนคอนเวกซ์ฮัลล์เป็นจำนวน h จุดแล้ว สรุปได้ว่าการเดินแถวของจาร์วิสจะสามารถหาจุดทุกๆจุดบนคอนเวกซ์ฮัลล์ได้ภายในเวลา O(nh)
โดยปกติแล้ว การเดินแถวของจาร์วิสนั้นจะสามารถทำงานได้เร็วกว่าเกรแฮมสแกน โดยกรณีที่เลวที่สุดคือกรณีที่ทุกจุดอยู่บนคอนเวกซ์ฮัลล์ เช่น รูปวงกลม
ด้วงคีมหยักสองต่อ
กลวิธีการค้นหาแบบฟีโบนัชชี
ในวิทยาการคอมพิวเตอร์ กลวิธีการค้นแบบฟีโบนัชชี  เป็นกลวิธีการค้นโดยนำเอาจำนวนฟีโบนัชชีมาสร้างเป็นกลวิธีค้นตำแหน่งของข้อมูลในแถวลำดับ ที่ได้รับการเรียงลำดับแล้วโดยใช้หลักการของขั้นตอนวิธีการแบ่งแยกและเอาชนะ ซึ่งเป็นหลักการเดียวกับที่ใช้ในกลวิธีการค้นหาแบบทวิภาค
แต่เมื่อเปรียบเทียบกับกลวิธีการค้นแบบเลขคู่แล้วกลวิธีการค้นแบบฟีโบนัชชีจะมีการตรวจสอบตำแหน่งของข้อมูลโดยใช้การกระจายตัวที่น้อยกว่า ทำให้เกิดข้อได้เปรียบเมื่อใช้กลวิธีการค้นแบบฟีโบนัชชีกับข้อมูลที่ถูกเก็บอยู่ในแหล่งเก็บข้อมูลไม่มีรูปแบบ ซึ่งเวลาในการใช้ค้นตำแหน่งของข้อมูลที่ต้องการในแหล่งข้อมูลดังกล่าวจะขึ้นอยู่กับตำแหน่งของข้อมูลที่ได้มีการเข้าถึงครั้งล่าสุด ยกตัวอย่างแหล่งข้อมูลแบบไม่มีรูปแบบอาธิเช่น แถบบันทึก ที่ซึ่งเวลาในการเข้าถึงข้อมูลใดๆในแถบแม่เหล็กจะขึ้นอยู่กับระยะทางระหว่างข้อมูลนั้นกับข้อมูลที่หัวของแถบแม่เหล็กกำลังอ่านอยู่ ทั้งนี้กลวิธีการค้นแบบฟีโบนัชชียังมีข้อได้เปรียบในการค้นข้อมูลในแคช (Cache) หรือแรม (Ram) ซึ่งเป็นแหล่งข้อมูลแบบไม่มีรูปแบบอีกด้วยเช่นกัน
กลวิธีการค้นแบบฟีโบนัชชีใช้หลักการของขั้นตอนวิธีโดยการแบ่งแยกและเอาชนะโดยการตัดถอนข้อมูลในส่วนที่ไม่สนใจออกจนได้ตำแหน่งของข้อมูลที่ต้องการ การตัดถอนครั้งหนึ่งจะตัดถอนเป็นจำนวนในลำดับของจำนวนฟีโบนัชชี และจะลดค่าของลำดับลงเรื่อยๆทุกครั้งที่พิจารณาเสร็จ กลวิธีการค้นแบบฟีโบนัชชีจะสิ้นสุดลงก็ต่อเมื่อเจอตำแหน่งของข้อมูลที่สนใจหรือค้นแล้วไม่พบว่ามีข้อมูลที่สนใจปรากฏอยู่ในแหล่งข้อมูลเลย
ให้ F คือแถวลำดับของจำนวนฟีโบนัชชี ให้ "k" คือค่าของข้อมูลใดๆใน"F" "n"คือขนาดของแถวลำดับของข้อมูล ถ้า "n" เป็นเลขฟีโบนนัชชีให้ "Fm=n" แต่ถ้า "n" ไม่ใช่จำนวนฟีโบนัชชีให้ "Fm" เป็นจำนวนฟีโบนัชชีที่มากกว่า "n" แต่ใกล้เคียงที่สุด นิยามให้ค่าใน "F" เหมือนกับลำดับฟีโบนนัชชีโดยให้ "Fk+2=Fk+1+Fk" โดยที่ "k≥0 ,F1=1" และ "F0=0"
ให้ "R" เป็นตารางที่เก็บสถิติขนาด "n" ช่อง ให้ ที่มีการเพิ่มขึ้นของลำดับ "K" โดยที่ "K1 &lt; K2 &lt; ... &lt; Kn" ขั้นตอนวิธีนี้จะหาข้อมูลที่ต้องการตามค่าของ "K" โดยจะสมมติว่า "N+1 = Fk+1"ซึ่งหาก "N+1"ไม่ใช่จำนวนฟีโบนัชชีก็ให้ใช้หลักเกณฑ์การเปลี่ยนเป็นจำนวนฟีโบนัชชีเช่นเดียวกับขั้นตอนวิธีแรก โดยให้ "X" เป็นข้อมูลที่ต้องการจะหา
ให้ "R" เป็นแถวลำดับขนาด "13" ช่องมีข้อมูลคือ {1, 4, 5, 7, 9, 11, 13, 16, 18, 20, 25, 27, 30} ต้องการหาว่า "9" อยู่ในตำแหน่งที่เท่าไหร่ในแถวลำดับ
1. กำหนดให้ "i = F13, p = F8, q = F5" (ขั้นตอนที่หนึ่ง)
2. เนื่องจาก "x &lt; i" (ขั้นตอนที่สอง) จึงกำหนดค่าใหม่ให้ "i = F8, p = F5 , q = F3 " (ขั้นตอนที่สาม)
3. เนื่องจาก "x &lt; i" (ขั้นตอนที่สอง) จึงกำหนดค่าใหม่ให้ "i = F5, p = F3 , q = F2 " (ขั้นตอนที่สาม)
4. เนื่องจาก x = i จึงได้ว่าค้นเจอค่า "9" ในแถวลำดับที่ช่อง "K = 5" (ขั้นตอนที่สอง)
หัวข้ออื่นๆที่เกี่ยวข้อง.
ต้นไม้แบบทอดข้ามน้อยสุดแบบยุคลิด
ต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิด หรือ ต้นไม้แผ่ทั่วที่น้อยที่สุดแบบยุคลิด  เป็นปัญหาทางทฤษฎีกราฟเกี่ยวกับการหาต้นไม้ทอดข้ามที่น้อยที่สุดบนระนาบแบบยูคลิด หรือก็คือวิธีเชื่อมโยงจุดต่าง ๆ บนระนาบสองมิติ ให้เป็นต้นไม้และมีระยะทางรวมระหว่างจุดต่าง ๆ น้อยที่สุด โดยมองจุดต่าง ๆ เป็นจุดยอดและ ระยะทางระหว่างจุดยอดเป็นเส้นเชื่อม
ขั้นตอนวิธีในการคำนวณต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิด.
ขั้นตอนวิธีที่ง่ายที่สุดในการคำนวณต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิด เมื่อมีจุดทั้งหมด "n" จุด
ถ้ากราฟเป็นกราฟแบบบริบูรณ์ที่มีจุดยอด "n" จุด จะมีเส้นเชื่อม "n" ("n"-1) /2 เส้น คำนวณน้ำหนักของเส้นเชื่อมแต่ละเส้นด้วยการหาระยะห่างระหว่างคู่จุดยอดนั้น ๆ แล้วจึงใช้ขั้นตอนวิธีแบบพื้นฐานในการคำนวณต้นไม้แบบทอดข้ามเล็กสุด (เช่น ขั้นตอนวิธีของพริม  หรือ ขั้นตอนวิธีของครูสกาล  )
แต่ถ้ากราฟเป็นกราฟใด ๆ ที่มีจุดยอด "n" จุด และมีเส้นเชื่อม Θ ("n"2) เส้น เราจะต้องการเวลา Ω ("n"2) และใช้พื้นที่ Ω ("n"2) ในการเก็บเส้นเชื่อมทุกเส้นในกราฟ
วีธีที่ดีกว่าในการคำนวณต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิด คือ การแบ่งเซตจำกัดของจุดบนระนาบ ให้เป็นเซตของสามเหลี่ยมเดอลันเนย์ :
สุดท้ายแล้ว ขั้นตอนวิธีนี้จะใช้เวลาเป็น O ("n" log "n") และใช้พื้นที่เป็น O ("n")
ขนาดที่คาดหวัง.
ขนาดที่คาดหวังของต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิด สำหรับจุดจำนวนมาก ถูกค้นคว้าโดย เจ.ไมเคิล สตีลเล กล่าวว่า ถ้า "f" เป็นฟังก์ชันความหนาแน่นของความน่าจะเป็นของจุดที่จะถูกเลือก แล้ว formula_1 ขนาดใด ๆ และ formula_2 ขนาดของต้นไม้ทอดข้ามที่น้อยที่สุดแบบยุคลิดจะประมาณได้ว่า
เมื่อ formula_4 คือ ค่าคงที่ที่ขึ้นกับ formula_5 ซึ่งเราไม่ทราบค่าที่แน่นอนของค่าคงที่นี้ แต่สามารถประมาณได้จากหลักฐานการทดลอง
ตัวสร้างความสอดคล้องแบบเชิงเส้น
ตัวสร้างความสอดคล้องแบบเชิงเส้น  เป็นหนึ่งในขั้นตอนวิธีที่นิยมใช้งานของ ตัวสร้างเลขสุ่มเทียม (pseudorandom number generator: PRNG)ซึ่งเป็นการสร้างตัวสุ่มโดยใช้สมการเวียนเกิด (Recurrence Relation)ที่มีความสัมพันธ์ดังนี้
สังเกตเห็นว่า ตัวเลขสุ่มที่ได้จากความสัมพันธ์ข้างต้น คือค่าของ Xn+1 ซึ่งเป็นผลที่ได้มาจากค่าของตัวเลขสุ่มลำดับก่อนหน้า (Xn) แสดงว่าทุกตัวเลขสุ่มที่สุ่มได้ออกมานั้น เป็นผลลัพธ์ที่ได้จากเลขสุ่มตัวก่อนหน้าเสมอ ดังนั้น X1 คือ เลขสุ่มตัวแรกที่ได้ออกมาจากความสัมพันธ์นี้ โดยที่มี ค่าเริ่มต้น คือ (X0)
จากข้อสังเกตข้างต้น เราจะสรุปได้ว่า ถ้าเราเริ่มต้นด้วย ค่าเริ่มต้นเดียวกัน ลำดับของตัวเลขสุ่มที่มาจาก ความสัมพันธ์นี้ ที่มีค่า X0, a, c และ m เป็นตัวเลขชุดเดียวกัน จะมีลำดับเหมือนกันเสมอ
ซึ่งถ้าดูจากความสัมพันธ์ Xn+1 = (aXn + c) mod m แล้ว จะเห็นว่าเป็นความสัมพันธ์ที่ทำความข้าใจได้ง่าย ไม่ซับซ้อน และสามารถเขียนรหัสได้ง่าย จึงเป็นนิยมใช้กันอย่างแพร่หลาย
ขนาดของคาบ.
คาบ (ในที่นี้ หมายถึง ค่าสูงสุด)ของตัวสร้างความสอดคล้องแบบเชิงเส้น จะมีค่าได้สูงสุดเกือบเท่ากับ "m"(ขอเรียกว่า คาบแบบสูง) แต่ก็มีบางส่วนที่มีค่าต่ำกว่านั้นมาก ถ้าเรากำหนดให้ c เป็นจำนวนเต็มที่มีค่ามากกว่า 0 แล้ว ตัวสร้างความสอดคล้องแบบเชิงเส้น จะมีคาบแบบสูงในทุกๆค่าเริ่มต้น (seed) ก็ต่อเมื่อ
ถึงแม้ว่า ตัวสร้างความสอดคล้องแบบเชิงเส้น จะมีความสามารถในการสร้างตัวเลขสุ่มเทียมได้เป็นอย่างดีก็ตาม แต่ว่ามันก็มีความละเอียดอ่อนมากในการเลือกค่าของ a, c และ m ดังนั้นเราต้องเลือกค่าต่างๆดังกล่าวให้ดี เพื่อที่จะให้ตัวสร้างความสอดคล้องแบบเชิงเส้น ทำงานได้ดีตามที่เราต้องการ
ตัวอย่างค่าของ a, c และ m ที่ใช้กันทั่วไป.
โดยมาก ค่าของ m ที่ใช้ในการสร้างตัวสร้างความสอดคล้องแบบเชิงเส้น จะมีค่าเปนค่าที่เป็นค่า 2 ยกกำลัง ซึ่งส่วนใหญ่เป็นค่า 232 หรือ 264 เพราะสามารถคำนวณผ่านคอมพิวเตอร์ได้โดยการชิฟขวาไป 32 หรือ 64 บิตตามลำดับ
ตารางด้านล่างนี้จะแสดงถึงค่าที่ใช้กันโดยทั่วไป รวมทั้งค่าที่อยู่ในรันไทม์ไลบราลี่ (Runtime Libraries) ของคอมไพเลอร์ต่างๆ
เนื่องจากตัวสร้างความสอดคล้องแบบเชิงเส้นนั้น เกิดจากความสัมพันธ์ในรูปแบบที่เข้าใจได้ง่าย ดังนั้นรหัสเทียมที่เขียนจึงมีเพิ่มขึ้นมาแค่เพียงการกำหนดค่าให้กับ a, c และ m เท่านั้น ซึ่งมีรหัสเทียมดังนี้
//รหัสเทียมในส่วนของตัวสร้างความสอดคล้องแบบเชิงเส้นที่ใช้ในคลาส Random ในภาษาจาวา
seed = (seed * 0x5DEECE66DL + 0xBL) mod ((1L « 48) - 1);
//ซึ่งใช้ a = 0x5DEECE66D (เลขฐานสิบ คือ 25214903917)
// c = 0xB (เลขฐานสิบ คือ 11)
// m = 1L « 48 คือการเลื่อนบิตของเลข 1 ไปทางซ้ายเป็นจำนวน 48 บิต ซึ่งได้เป็นเลขฐานสิบ คือ 248
ดังที่ได้ใช้ในหัวข้อรหัสเทียมแล้ว ตัวสร้างความสอดคล้องแบบเชิงเส้น ใช้ในการทำงานของ เมท๊อด next ในคลาส Random ในภาษาจาวา ซึ่งรหัสของเมท๊อดดังกล่าวเป็นดังนี้
synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) &amp; ((1L « 48) - 1);
return (int)(seed »&gt; (48 - bits));
ซึ่งจะเห็นว่าในบรรทัดที่ 2 ของรหัส เป็นรหัสในส่วนที่ใช้สร้างตัวเลขสุ่มแบบการสร้างความสอดคล้องแบบเชิงเส้น ดังที่ได้กล่าวไว้ในหัวข้อรหัสเทียมแล้ว
ซึ่งไม่ได้มีเพียงภาษาจาวาเท่านั้น ภาษาคอมพิวเตอร์อื่นๆก็นำเอาขั้นตอนวิธีการสร้างความสอดคล้องแบบเชิงเส้นนี้ไปใช้ด้วยเช่นกัน
ขั้นตอนวิธีสมิธ-วอเตอร์แมน
ขั้นตอนวิธีสมิธ-วอเตอร์แมน  นำเสนอโดย และ ในปี 1981
เป็นขั้นตอนวิธีสำหรับการปรับแนวของลำดับเฉพาะที่ เพื่อหารูปแบบของลำดับให้เหมือนลำดับสองลำดับที่ต้องการ มากที่สุด
ขั้นตอนวิธีนี้มีชื่อเสียงเพื่อเรียงลำดับของ โปรตีน หรือ นิวคลีโอไทด์ โดยใช้ระบบให้คะแนนเมตริกซ์และ กำหนดพลวัตในการแก้ปัญหา
1. สร้างเมตริกซ์สมมาตร H ขนาดใหญ่กว่าความยาวของลำดับ 1 ช่อง
2. ให้คะแนนเมตริกซ์แต่ละช่องด้วยเงื่อนไขดังนี้
-formula_1 โดยที่ m,n=ความยาวของลำดับ 1และ2 ตามลำดับ
-ถ้าลำดับลำดับที่ i,j ของลำดับที่ 1 และ 2 ตรงกัน formula_2ถ้าไม่ตรงกันformula_3
-เติมช่องเมตริกซ์แต่ละช่องให้เป็นค่ามากที่สุดดังต่อไปนี้
3. นำเมตริกซ์ที่ได้ไปคิดย้อนกลับเพื่อหาลำดับที่ได้ผลลัพธ์ค่ามากที่สุดโดยคิดดังนี้
-หาค่าจากเมตริกซ์ช่องก่อนหน้าที่มากที่สุด จนได้เมตริกซ์ช่องที่มีค่าเป็น 0
-นำพิกัดช่อง (i,j) ที่ย้อนไปจากขั้นตอนที่แล้วมาหาลำดับ โดย
-พิกัดที่เปลี่ยนแปลงทั้ง i,j หมายถึงกรณีที่ ลำดับ i,j ของลำดับสองตรงกัน หรือไม่ตรงกัน
-พิกัดที่เปลี่ยน i เพียงอย่างเดียว หมายถึงกรณีที่ คิดลำดับ i-1,j แทน i,j
-พิกัดที่เปลี่ยน j เพียงอย่างเดียว หมายถึงกรณีที่ คิดลำดับ j-1,j แทน i,j
4. พิจารณ์กรณีต่างๆ โดยดูจากเมตริกซ์และพิกัดที่เปลี่ยนไป จนเป็นลำดับที่ต้องการ
ลำดับแรก = ACACACTA
ลำดับที่สอง = AGCACACA
สร้างเมตริกซ์ H
คิดย้อนกลับเมตริกซ์ จะได้พิกัด (8,8), (7,7), (7,6), (6,5), (5,4), (4,3), (3,2), (2,1), (1,1), (0,0)
ลำดับแรก = A-CACACTA
ลำดับที่สอง = AGCACAC-A
Smith, Temple F.; and Waterman, Michael S. (1981)
อาหารเชิงหน้าที่
หลวงพ่อบ่าย ธมฺมโชโต
หลวงพ่อบ่าย ธมฺมโชโต (พ.ศ. 2404 - 5 มกราคม พ.ศ. 2485) วัดช่องลม อำเภอเมือง จังหวัดสุมทรสงคราม ท่านเป็นศิษย์คู่บารมีของ หลวงพ่อแก้ว วัดพวงมาลัย ส่วนสหธรรมิกที่สนิทสนมกลมเกลียวกันอย่างยิ่งก็คือ หลวงพ่อคง วัดบางกะพ้อม สมเด็จพระราชปิตุลาบรมพงศาภิมุข เจ้าฟ้าภาณุรังษีสว่างวงศ์ กรมพระยาภาณุพันธุวงศ์วรเดช ทรงชื่นชมศรัทธาในพระเกจิอาจารย์ทั้ง 2 รูป เคยรับสั่งต่อ"พระองค์เจ้าหญิงเฉลิมเขตต์มงคล"ว่า สิ้น"หลวงพ่อแก้ว"แล้ว ท่านวัดช่องลมและท่านวัดบางกะพ้อมเชื่อถือได้
หลวงพ่อบ่าย ธมฺมโชโต ท่านเป็นบุตรกำพร้า ซึ่งนายเกตุ (หรือพระอาจารย์เกตุ พี่ชายของหลวงพ่อแก้ว วัดพวงมาลัย และ นางปราง ทองพันธ์ นำมาเลี้ยงไว้เป็นบุตรบุญธรรม เกิดเมื่อปี พ.ศ. 2404 ตรงกับรัชสมัยของพระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว ที่บ้านบางครก อำเภอบ้านแหลม จังหวัดเพชรบุรี
อายุ 10 ปี ได้ศึกษาภาษาไทยกับบาลีกับ"พระอาจารย์คล้า" วัดสวนทุ่ง
อายุ 15 ปี บรรพชาเป็นสามเณรอยู่ 1 พรรษา แล้วลาสิกขาบทมาช่วยบิดามารดาประกอบอาชีพ