pythainlp/thai-wiki-dataset-v3 huggingface dataset:
การชักตัวอย่างเรซัฟวาร์

Reservoir sampling เป็นกลุ่มของอัลกอริทึมแบบสุ่ม สำหรับการสุ่มเลือกตัวอย่าง k จากรายการ S ที่มี n รายการ โดยที่ n เป็นจำนวนที่มากหรือไม่ทราบค่า โดยปกติ n มีขนาดใหญ่พอที่ไม่พอดีกับหน่วยความจำหลัก ตัวอย่างเช่นรายการข้อความค้นหาใน Google และ Facebook
ดังนั้นเราจึงรับอาร์เรย์ขนาดใหญ่ของตัวเลข (เพื่อให้ง่ายขึ้น) และเราจำเป็นต้องเขียนฟังก์ชันที่มีประสิทธิภาพเพื่อสุ่มเลือกหมายเลข k ที่ 1  10):
ความน่าจะเป็น 10/i เก็บรายการใหม่ไว้ (ทิ้งแบบเก่าหรือเลือกว่าจะแทนที่แบบสุ่มแต่ละครั้งมีโอกาส 1/10)
ความน่าจะเป็น 1-10/i เก็บรายการเก่า (ละเว้นรายการใหม่)
ดังนั้น:
เมื่อมี 10 รายการหรือน้อยกว่าแต่ละรายการจะถูกเก็บไว้ด้วยความเป็นไปได้ 1
เมื่อมี 11 รายการแต่ละรายการจะถูกเก็บไว้ด้วยความน่าจะเป็น 10/11 สำหรับรายการเก่านั่นคือ (1)(1/11 + (10/11)(9/10)) = 1/11 + 9/11 = 10/11
เมื่อมี 12 รายการรายการที่สิบสองจะถูกเก็บไว้กับความน่าจะเป็น 10/12 และแต่ละ 11 รายการก่อนหน้านี้จะถูกเก็บไว้ด้วยความน่าจะเป็น (10/11)(2/12 + (10/12)(9/10)) = (10/11)(11/12) = 10/12
เมื่อพิสูจน์ได้ว่ามี n รายการแต่ละรายการจะถูกเก็บไว้ด้วยความน่าจะเป็น 10 / n
== Reservoir with Random Sort ==
อัลกอริธึมเรซัฟวาร์แบบง่ายๆสามารถออกแบบโดยใช้การจัดเรียงแบบสุ่ม และดำเนินการโดยใช้โครงสร้างข้อมูลคิวลำดับความสำคัญ อัลกอริทึมนี้กำหนดจำนวนสุ่มเป็นคีย์แต่ละรายการและเก็บรักษา k รายการที่มีค่าต่ำสุดสำหรับคีย์ ในสาระสำคัญนี้เทียบเท่ากับการกำหนดหมายเลขสุ่มให้แต่ละรายการเป็นคีย์ การเรียงลำดับรายการโดยใช้คีย์เหล่านี้และรับรายการ k ด้านบน เวลาทำงานที่แย่ที่สุดของอัลกอริทึมคือ O(n log k) ขณะที่เวลาที่ดีที่สุดคือ O(n) 
(*
S is a stream of items to sample, R will contain the result
S.Current returns current item in stream
S.Next advances stream to next position
max-priority-queue supports:
Count -> number of items in priority queue
Maximum -> returns maximum key value of all items
Extract-Max -> Remove the item with max key
Insert(key, Item) -> Adds item with specified key
)
ReservoirSample(S[1..?], R[1..k])
H = new max-priority-queue
while S has data
r = Random(0,1)
if H.Count  r
H.Extract-Max
H.Insert(r, S.Current)
S.Next
== อ้างอิง ==
https://www.geeksforgeeks.org/reservoir-sampling/
ขั้นตอนวิธี
ขั้นตอนวิธีแบบสุ่ม
ปัญหาถุงกระสอบ

ปัญหาถุงกระสอบ (0/1 Knapsack problem) คือ การเลือกหยิบของใส่ถุงโดยให้มีมูลค่ารวมสูงที่สุด แต่น้ำหนักโดยรวมต้องไม่เกินน้ำหนักที่บรรจุได้ โดยของแต่ละชิ้นจะมีน้ำหนักและมูลค่าแตกต่างกันไป ที่เรียกว่า 0/1 นั้นเพราะเมื่อหยิบของจะเป็นก้อนๆ จะไม่แบ่งย่อยเป็นชิ้นๆ แต่ถ้าแบ่งย่อยได้จะเป็นอีกปัญหาหนึ่ง (fractional knapsack problem)
=== การแก้ปัญหา ===
- วิธีที่ตรงไปตรงมาที่สุดคือการไล่ทดลอง หยิบ/ไม่หยิบ ของแต่ละชิ้น แล้วหามูลค่ารวมที่มากที่สุดโดยน้ำหนักรวมไม่เกินที่กำหนด
- การใช้ Dynamic programming เข้ามาเพื่อหลีกเลี่ยงการทำซ้ำๆ โดยสร้าง array K[][]
def knapSack(W, wt, val, n):
K = 0 for x in range(W+1)] for x in range(n+1
Build table K[][] in bottom up manner
for i in range(n+1):
for w in range(W+1):
if i==0 or w==0:
K[i][w] = 0
elif wt[i-1] 
=== อ้างอิง ===
detohm. 0-1-knapsack-problem-. FINOMENA. 14 May 2018
วิทยาการเข้ารหัสลับ
กำหนดการพลวัต
การสร้างเพาเวอร์เซต

ในทฤษฎีการคำนวณและทฤษฎีออโตมาต้าเป็นการสร้างเซตย่อยของเพาเวอร์เซตเป็นวิธีการมาตรฐานสำหรับการแปลงค่าสถานะจำกัดหรือสถานะที่ไม่จำกัดก็ได้ ซึ่งจำเป็นต่อการใช้ในภาษาทางการ เป็นทฤษฎีที่สำคัญเพราะมีการระบุว่า (NFAs) แม้จะมีความยืดหยุ่นเพิ่มเติมแต่ก็ไม่สามารถรับรู้ภาษาใด ๆ ที่ (DFA) บางตัวไม่สามารถรับรู้ได้นอกจากนี้ยังเป็นสิ่งสำคัญในทางปฏิบัติสำหรับการแปลง (NSAs) ที่ง่ายต่อการสร้างให้เป็น(DFAs) ที่มีประสิทธิภาพมากขึ้น อย่างไรก็ตาม หาก (NFA) มี n สถานะ (DFAs) ที่เป็นผล อาจมีสถานะได้ถึง 2 สถานะตัวเลข ฟังก์ชันเลขชี้กำลังที่มีจำนวนมากบางครั้งอาจทำให้การสร้างเป็นไปไม่ได้สำหรับ (NFAs) ที่มีจำนวนมาก การสร้างบางครั้งเรียกว่า Rabin-Scott powerset construction (หรือpowerset construction) เพื่อแยกความแตกต่างจากโครงสร้างที่คล้ายกันสำหรับออโตมาต้าประเภทอื่น ๆ ได้รับการตีพิมพ์เป็นครั้งแรกโดย Michael O. Rabin และ Dana Scott ในปี 1959

การสร้างเพาเวอร์เซต
ในการสร้างเพาเวอร์เซตของสถานะทั้งหมดของ (DFA) คือ เพาเวอร์เซตของ Q ของเซ็ตย่อยที่เป็นไปได้ทั้งหมดของ Q อย่างไรก็ตามหลายสถานะของ (DFA) ที่เป็นผลอาจไม่มีประโยชน์เนื่องจากอาจไม่สามารถเข้าถึงได้จาก สถานะเริ่มต้น อีกทางเลือกหนึ่งของการก่อสร้างสร้างเฉพาะสถานะที่สามารถเข้าถึงได้จริง
ตัวอย่าง
(NFA) ด้านล่างมี 4 สถานะ สถานะ 1 เป็นค่าเริ่มต้นและสถานะ 3 และ 4 เป็นตัวอักษรที่ประกอบด้วย 2 สัญลักษณ์  คือ 0  และ1 และมีการ ε-moves.
สถานะเริ่มต้นของ (DFA) ที่สร้างขึ้นจาก (NFA) นี้คือชุดของสถานะ (NFA) ทั้งหมดที่สามารถเข้าถึงได้จากสถานะ 1 โดยการε-moves นั่นคือชุด {1,2,3} การเปลี่ยนจาก {1,2,3} โดยใช้สัญลักษณ์ป้อน 0 ต้องเป็นไปตามที่ลูกศรจากสถานะ  1 ถึงสถานะ 2 หรือลูกศรจากสถานะ  3 ถึงสถานะ  4. นอกจากนี้สถานะ ทั้ง 2 และสถานะ 4 ยังไม่ได้ ε-movesดังนั้น T ({1,2,3}, 0) = {2,4} และด้วยเหตุผลเดียวกัน (DFA) ที่สร้างขึ้นทั้งหมดจาก (NFA) มีดังที่แสดงด้านล่างในตัวอย่างนี้เราจะเพาเวอร์เซตซึ่งเท่ากับ 2 ยกกำลัง n และ n = 4  ดังนั้นจะเพาเวอร์เซตทั้งหมด 2 ยกกำลัง 4 = 16 สถานะ ซึ่งได้มีสถานะ 5 สถานะที่สามารถเข้าถึงได้จากสถานะเริ่มต้นของ DFA ส่วนที่เหลืออีก 11 วถานะในเพาเวอร์เซตของชุด(NFA)จะไม่สามารถเข้าถึงได้
ตัวอย่างการเขียนโปรแกรม
def Powerset(data):
result = []
for i in data:
newsubsets = [subset + [i] for subset in result]
result.extend(newsubsets)
return result
ออโตมาทา
สพล อัศวมั่นคง

สพล อัศวมั่นคง (เกิด 6 ธันวาคม พ.ศ. 2536) ชื่อเล่น เกรท เป็นนักแสดง นายแบบ นักร้อง และพิธีกรชาวไทย 
== ประวัติ ==
สพล เกิดเมื่อวันที่ 6 ธันวาคม พ.ศ. 2536 ที่กรุงเทพมหานคร เป็นนักแสดงชาวไทยและนายแบบ ในอดีตเคยเป็นนักแสดงสังกัดช่อง 7 HD
สพลเคยเป็นเชียร์ลีดเดอร์ธรรมศาสตร์ ในงานฟุตบอลประเพณีจุฬาฯ–ธรรมศาสตร์ ครั้งที่ 70 เขาจบการศึกษาระดับมัธยมจากโรงเรียนบดินทรเดชา (สิงห์ สิงหเสนี) ต่อมาเขาศึกษาระดับปริญญาตรีที่ภาควิชาเทคโนโลยีการจัดการ การจัดการวิศวกรรม สถาบันเทคโนโลยีนานาชาติสิรินธร มหาวิทยาลัยธรรมศาสตร์
== อาชีพ ==
เกรท สพล เริ่มเข้าสู่วงการบันเทิงไทยเคยเป็นดีเจคลื่นในวิทยุและได้รับโอกาสเดินประกวดเดินแบบโดยเวทีการประกวด The Cleo Most Eligible Bachelor 2016 และได้รับรางวัลชนะเลิศ จากนั้นมีผลงานถ่ายแบบและการแสดง เช่นมิวสิกวิดีโอเพลง "หลุมรัก" ของศิลปินวงอินสติงก์
มีผลงานแสดงซีรีส์ รูมอะโลน 2 เป็นที่รู้จักกันในบทบาท "คีย์" และได้รับบทบาท "ป้อง" ในซีรีส์ Bangkok รัก StoriesBangkok รัก Stories เมื่อปี 2560 ได้รับโอกาสเข้าร่วมแสดงละครเรื่อง พ่อยุ่งลุงไม่ว่าง ในฐานะนักแสดงรับเชิญออกอากาศทางสถานีช่อง 3
ปัจจุบันเขาได้ลงนามสัญญาในฐานะนักแสดงในสังกัดสถานีช่อง 7 HDเขาผลงานละครเรื่อง รักหวานบ้านวุ่น, เจ้าสาวช่างยนต์ เป็นต้นปัจจุบันเขายังรับงานละครเรื่อยๆมา
เมื่อในปี 2562 สพลมีผลงานละครเรื่อง หลงเงาจันทร์ ในฐานะนักแสดงรับเชิญและเป็นที่รู้จักกันในบทบาท พลาทิป หรือ พีท เขามีผลงานภาพยนตร์เรื่อง แสงกระสือและเป็นที่รู้จักกันในบทบาท เจิด แสดงร่วมกับ ภัณฑิรา พิพิธยากร และ โอบนิธิ วิวรรธนวรางค์ ภาพยนตร์เรื่องนี้ออกจากฉายโรงภาพยนตร์เมื่อวันที่ 14 มีนาคม พ.ศ. 2562
==ผลงาน==
===ซีรีส์===
===ละครโทรทัศน์===
=== ละครสั้น ===
|rowspan = "1" align = "center"| 2563 ||align = "center"| ฟ้ามีตา ตอน คนเดียว ที่คิดถึง ||align = "center"| กุ้ง
|-
|}
=== เพลง ===
=== พิธีกร ===
=== มิวสิควีดีโอ ===
=== ภาพยนตร์ ===
| rowspan = "1" | 2562 ||align="center"| แสงกระสือ ||align="center"| เจิด
|-
| rowspan = "1" | 2564 ||align="center"| อโยธยา มหาละลวย||align="center"| ทอง
|-
|rowspan="3"|2566
|align="center"|มอนโด
|align="center"|ดอม
|-
|align="center"|ไปรษณีย์ 4 โลก
|align="center"|เดย์
|-
|align="center"|Ghost Rookie ผีมือใหม่
|align="center"|วิน
|-
|}
=== งานพากษ์ ===
== รางวัล ==
== อ้างอิง ==
== แหล่งข้อมูลอื่น ==
บุคคลที่เกิดในปี พ.ศ. 2536
บุคคลที่ยังมีชีวิตอยู่
นักแสดงชายชาวไทย
นักแสดงสังกัดจีเอ็มเอ็มทีวี
บุคคลจากโรงเรียนบดินทรเดชา (สิงห์ สิงหเสนี)
บุคคลจากคณะวิศวกรรมศาสตร์ มหาวิทยาลัยธรรมศาสตร์
บุคคลจากสถาบันเทคโนโลยีนานาชาติสิรินธร มหาวิทยาลัยธรรมศาสตร์
นายแบบไทย
พุทธศาสนิกชนชาวไทย
ดัชนีเอฟเอ็ม

ดัชนีเอฟเอ็ม (FM-index) คือการนำเอาข้อความที่เกิดจากการสลับที่อย่างมีรูปแบบด้วย Burrows-Wheeler Transform (BWT) มาหาตำแหน่งของตัวอักษรที่เราต้องการ
==ขั้นตอนการทำงาน==
1.รับข้อมูลจากการสลับที่ของตัวอักษรจาก BWT ตัวอักษรที่ใส่เข้าไป
เช่น abaaba จะได้ผลเป็น
$abaaba
a$abaab
aaba$ab
aba$aba
abaaba$
ba$abaa
baaba$a
2.ดูคอลัมน์แรกและคอลัมน์สุดท้ายเป็นหลัก
ใช้ตัว $ ในการบอกตำแหน่ง
0 $abaaba 6 $
1 a$abaab 5 a$
2 aaba$ab 2 aaba$
3 aba$aba 3 aba$
4 abaaba$ 0 abaaba$
5 ba$abaa 4 ba$
6 baaba$a 1 baaba$
3.ใส่ตัวอักษรที่ต้องการหาตำแหน่ง
เช่น ตำแหน่งของ ab
หาแถวที่ขึ้นต้นด้วยตัว a และมี b ต่อท้าย
$abaaba
→ a$abaab←
→ aaba$ab←
→ aba$aba
→ abaaba$
ba$abaa
baaba$a
4.ต้องการหาตำแหน่ง
เช่น ตำแหน่งของ a
หาแถวที่ขึ้นต้นด้วยตัว ba และมี a ต่อท้าย
$abaaba
a$abaab
aaba$ab
aba$aba
abaaba$
→ ba$abaa←
→ baaba$a←
5.ตัดตำแหน่งอื่นออกจะเหลือตำแหน่งที่มีเฉพาะ  อยู่ที่ [0,3]
aba$aba  3 aba$
abaaba$  0 abaaba$
==ตัวอย่างการเขียนโปรแกรม==
def FM_index(query):
def string_search (query, firstCol, bwtString,saArray,countTable,occTable):
hitSApositions = []
queryLength = len(query)
query = list(query)
initLetter = query.pop
startOld = min(letter_range_in_string(initLetter,firstCol))
endOld = max(letter_range_in_string(initLetter,firstCol))
if queryLength ==1:
hitSApositions = letter_range_in_string(initLetter,firstCol)
else:
i = 2
while i 
==อ้างอิง==
ต้นไม้ 2–3

ในวิทยาการคอมพิวเตอร์ 2–3 tree เป็นโครงสร้างข้อมูลต้นไม้ ซึ่งทุกโหนดที่มี children มี children สอง ( 2 โหนด ) และหนึ่งองค์ประกอบข้อมูลหรือสาม children ( 3 โหนด ) และสององค์ประกอบข้อมูล อ้างอิงจาก Knuth “B – tree ของลำดับที่ 3 คือ 2 – 3 tree ” โหนดที่อยู่ด้านนอกของต้นไม้ ( leaf nodes ) ไม่มี children และ 1 หรือ 2 องค์ประกอบข้อมูล 2 – 3 tree ถูกคิดค้นโดย John Hopcroft ในปีพ. ศ. 2513
ไฟล์:2-3-4 tree 2-node.svg|2 node
ไฟล์:2-3-4-tree 3-node.svg|3 node
2-3 tree มีความสมดุล ซึ่งหมายความว่าด้านขวา, กึ่งกลางและด้านซ้ายแต่ละอันมีข้อมูลเดียวกันหรือใกล้เคียงกับข้อมูลเท่ากัน
== คำนิยาม ==
โหนดภายในเป็นโหนด 2 ถ้ามีองค์ประกอบข้อมูลและ children สอง
โหนดภายในเป็นโหนด 3 หากมีองค์ประกอบข้อมูลสองชุดและมีลูกสามคน
T เป็น 2-3 tree ถ้าหากมีคำใดข้อหนึ่งต่อไปนี้:
•  T ว่างเปล่า กล่าวอีกนัยหนึ่ง T ไม่มีโหนดใด ๆ
•  T เป็นโหนด 2 โหนดที่มีองค์ประกอบข้อมูล a. ถ้า T ทิ้งลูก L และขวาไว้ที่ R แล้ว
•  L และ R เป็นต้นไม้ที่ไม่ว่างเปล่า 2-3 tree ที่มีความสูงเท่ากัน
• a มากกว่าแต่ละองค์ประกอบใน L; และ
• a น้อยกว่าหรือเท่ากับแต่ละองค์ประกอบข้อมูลใน R
• T คือโหนด 3 ที่มีองค์ประกอบข้อมูล a และ b ซึ่ง a  e ให้ตั้ง T ไปที่ R และกลับไปยังขั้นตอนที่ 2
5.   สมมติว่า r คือโหนด 3 ตัวที่มีลูกซ้าย L, ลูกคนกลาง M และลูกขวา R ให้ a และ b เป็นสององค์ประกอบข้อมูลของ r โดยที่ a  b ให้ตั้ง T ไปที่ R และกลับไปยังขั้นตอนที่ 2
== การลบ ==
การประมวลผลการลบอาจแตกต่างกันระหว่าง 2-3 tree และ BB tree ในกรณีต้นไม้ 2-3 tree จะเป็นดังนี้
1.  หากผู้ปกครองที่มีองค์ประกอบลบมีสาม children ให้ลบองค์ประกอบนั้นและอัปเดตคีย์ของ parent ถ้าค่าลบเป็นค่าที่ใหญ่ที่สุดในกลุ่มพี่น้องให้ลบคีย์เดียวกันกับค่าลบออกจากคีย์ของ parent ถ้าค่าลบอยู่ตรงกลางระหว่าง parent's ให้ลบค่าของคุณจากคีย์หลักและย้าย parent's ขวาไปตรงกลาง ในกรณีด้านซ้ายสุดให้ลบคีย์กลางและเลื่อนตรงกลางไปทางซ้ายและขวาไปตรงกลาง
2.  หากผู้ปกครองที่มีองค์ประกอบลบมี 2 children จะค้นหาพี่น้องของ parent
3.  หากพี่น้องของ parent ที่ดึงข้อมูลมามี 2 children ให้รวมผู้ปกครองและ parent's กันเป็น parent หนึ่งที่มีสาม children
4.  เมื่อรวมเข้าด้วยการดำเนินงาน 3 จะยืนยันได้ว่าจำนวน parents and parents of parents มีค่าเท่ากับ 2 หรือ 3 ถ้ามีเพียง children เดียวให้ทำซ้ำตั้งแต่ 2 เป็นต้นไป
ในกรณีของ BB tree ให้ลบค่าลบก่อนเพื่อตัดสินว่าสภาพของต้นไม้ 2-3 tree มีความพึงพอใจหรือไม่ หากค่าการลบเป็นใบที่มีสององค์ประกอบให้ลบค่านั้นออก ในกรณีอื่น ๆ จะมีการดำเนินการโดยการคำนวณค่ามัธยฐานกับ parent หลังจากลบและทำซ้ำการผสมผสานกับพี่น้องของผู้ปกครองหากเด็กอายุสั้น
== การแทรก ==
แทรกทำงานโดยการค้นหาตำแหน่งที่เหมาะสมของคีย์และเพิ่มที่นั่น ถ้าโหนดกลายเป็น 4 โหนดโหนดจะถูกแบ่งออกเป็น 2 โหนดและคีย์กลางจะถูกย้ายไปยังพาเรนต์ แผนภาพแสดงให้เห็นถึงกระบวนการ

โครงสร้างข้อมูล
การจัดลำดับบิต

Bit Manipulation  หรือ การจัดลำดับบิต  การจัดการบิตคือการกระทำของอัลกอริทึมการจัดการบิตหรือข้อมูลชิ้นอื่น ๆ ที่สั้นกว่าคำ งานการเขียนโปรแกรมคอมพิวเตอร์ที่ต้องมีการจัดการบิตรวมถึงการควบคุมอุปกรณ์ระดับต่ำการตรวจจับข้อผิดพลาดและอัลกอริทึมการแก้ไขการบีบอัดข้อมูลอัลกอริทึมการเข้ารหัสและการเพิ่มประสิทธิภาพ สำหรับงานอื่น ๆ ส่วนใหญ่ภาษาโปรแกรมสมัยใหม่จะอนุญาตให้โปรแกรมเมอร์ทำงานโดยตรงกับ abstractions แทนที่จะเป็นบิตที่แทน abstractions เหล่านั้น รหัสแหล่งที่จะจัดการบิตจะใช้การดำเนินการบิต: AND, OR, XOR, NOT และบิต shift  การดำเนินการกับบิตถูกใช้ในการบีบอัดข้อมูล (ข้อมูลถูกบีบอัดโดยการแปลงจากการแทนหนึ่งไปยังอีกเพื่อลดพื้นที่), การเข้ารหัส (อัลกอริทึมการเข้ารหัสข้อมูลเพื่อความปลอดภัย) ในการเข้ารหัสถอดรหัสหรือบีบอัดไฟล์เราต้องแยกข้อมูลในระดับบิต การทำงานของ Bitwise ทำได้เร็วขึ้นและใกล้เคียงกับระบบและบางครั้งการเพิ่มประสิทธิภาพของโปรแกรมให้อยู่ในระดับดี
=== Bit Manipulation  ประโยชน์ ===
การดำเนินการกับบิตถูกใช้ในการบีบอัดข้อมูล (ข้อมูลถูกบีบอัดโดยการแปลงจากการแทนหนึ่งไปยังอีกเพื่อลดพื้นที่), การเข้ารหัส (อัลกอริทึมการเข้ารหัสข้อมูลเพื่อความปลอดภัย) ในการเข้ารหัสถอดรหัสหรือบีบอัดไฟล์เราต้องแยกข้อมูลในระดับบิต การทำงานของ Bitwise ทำได้เร็วขึ้นและใกล้เคียงกับระบบและบางครั้งการเพิ่มประสิทธิภาพของโปรแกรมให้อยู่ในระดับดี
โดยที่ 1 ไบต์ ประกอบด้วย 8 บิตและจำนวนเต็ม หรืออักขระใด ๆ สามารถโดยใช้บิตในคอมพิวเตอร์ เรียกว่า ฟอร์มไบนารี
-------------set bit------------
def set_bit(x,position):
mask = 1 > position
return shifted & 1
x         01100110
position  00000101
shifted   00000011
00000011    shifted
& 00000001    1
ans        00000001
------------- modify -----------
def modify_bit(x,position,state):
mask = 1  O(1)
--------------------- if a given number is a power of 2---------
if given number power 2 as 2 4 8 16 etc. output is True
if given number power 2 as 3 6 9 11 etc. output is False
def isPowerOfTwo(n):
if n == 0:
return False
else:
while(n%2 == 0):
n /= 2
return n == 1
wort case : O(logN)
best case : O(1)
b = isPowerOfTwo(5)
print(b)
การคูณลูกโซ่ของเมทริกซ์

การคูณลูกโซ่ของเมทริกซ์ (Matrix chain multiplication) ใช้สำหรับการแก้ปัญหาการคูณ matrix ซึ่งการคูณปกติอาจจะมีจำนวนครั้งมากเกินไปหรือมีประสิทธิภาพที่ไม่ดีพอซึ่งการใช้ algorithm นี้เป็นการคูณ matrix อย่างต่อเนื่องเพื่อหารูปแบบการคูณที่ดีที่สุดโดยใช้คุณสมบัติการเปลี่ยนหมวดหมู่การคูณของ matrix
ตัวอย่าง
matrix X มีขนาด 10 x 3
matrix Y มีขนาด 3 x 5
matrix Z มีขนาด 5 x 6 จำนวนครั้งของการคูณแบบ (X * Y) * Z คือ
(10*3*5 + 10*5*6) = 450 ครั้ง
ส่วนจำนวนครั้งของการคูณแบบ X * (Y * Z) คือ (3*5*6 + 10*3*6) = 270 ครั้ง จะเห็นได้ว่าการเปลี่ยนหมวดหมู่การคูณช่วยเพิ่มประสิทธิภาพหรือลดจำนวนครั้งการคูณลงได้ เราจึงต้องหารูปแบบของหมวดหมู่ที่ดีที่สุดโดยใช้ Matrix-Chain-Multiplication ทำการคูณ
ถ้าเราต้องการคูณแมทริกซ์จำนวน n ตัว A1A2…An ต้องการหาลำดับการคูณแมทริกซ์ ที่ใช้จำนวนครั้งของการคูณน้อยที่สุด
เช่น n = 3 ต้องการคูณ A1A2A3 เมื่อ A1, A2, A3 มีขนาด10x100, 100x5,  และ 5x50
ตามลำดับ
(A1A2)A3) ต้องใช้จำนวนครั้งของการคูณ = 10*100*5 เพื่อคำนวณ (A1A2)+ 10*5*50 เพื่อคำนวณ ((A1A2)A3)=7,500 ครั้ง
(A1(A2A3)) ต้องใช้จำนวนครั้งของการคูณ = 100*5*50 เพื่อคำนวณ (A2A3)
+ 10*100*50 เพื่อคำนวณ (A1(A2A3)) = 75,000 ครั้ง
จะเห็นได้ว่า ((A1A2)A3) ใช้จำนวนครั้งของการคูณน้อยกว่า (A1(A2A3))ถึงสิบเท่า
import sys
Matrix Ai has dimension p[i-1] x p[i] for i = 1..n
def MatrixChainOrder(p, n):
For simplicity of the program, one extra row and one
extra column are allocated in m[][].  0th row and 0th
column of m[][] are not used
m = 0 for x in range(n)] for x in range(n # O(n^2)
m[i,j] = Minimum number of scalar multiplications needed
to compute the matrix A[i]A[i+1]...A[j] = A[i..j] where
dimension of A[i] is p[i-1] x p[i]
cost is zero when multiplying one matrix.
for i in range(1, n): #O(n) + O(n^2)
m[i][i] = 0
L is chain length.
for L in range(2, n):
for i in range(1, n-L+1):# O(n^2)
j = i+L-1
m[i][j] = float('inf')   #จำนวนเต็มบวกที่ใหญ่ที่สุดที่รองรับโดยจำนวนเต็มปกติของ Python นี่คืออย่างน้อย 2 ** 31-1 จำนวนเต็มลบที่ใหญ่ที่สุดคือ -maxint-1 - ผลลัพธ์ที่ไม่สมมาตรจากการใช้เลขคณิตไบนารีเสริมของ 2
for k in range(i, j):# O(n^2)* O(n) = O(n^3)
q = cost/scalar multiplications
q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j]
if q 
== อ้างอิง ==
Matix Chain Multiplication
Dynamic Programming | Set 8 (Matrix Chain Multiplication)
วิธีการหาค่าเหมาะสมที่สุด
เมทริกซ์
กำหนดการพลวัต
ก็กูทําไม่เป็น

ก็กูทำไม่เป็น เป็นรายการโทรทัศน์ประเภทเรียลลิตี้ ผลิตโดยจีเอ็มเอ็มทีวีและไลน์ทีวี ประเทศไทย ออกอากาศทุกวันที่ 10 และ 20 ของทุกเดือน  เวลา 18.00 น. ทางไลน์ทีวีเท่านั้น เริ่มออกอากาศตอนแรกเมื่อวันที่ 10 กุมภาพันธ์ พ.ศ. 2561
รายการก็กูทำไม่เป็นจะมีเนื้อหาเกี่ยวกับเรื่องต่าง ๆ ที่พิธีกร ป๋อมแป๋ม (นิติ ชัยชิตาทร) ทำไม่เป็น ซึ่งจะต้องฝึกฝนและทำเรื่องนั้นให้เป็นให้ได้ โดยแต่ละเรื่องที่ทำไม่เป็นจะแบ่งเป็น ซีรีส์ (จำนวน 2-4 ตอน) ในแต่ละตอนของซีรีส์จะมีด่านภารกิจให้เรียนรู้หรือให้ทำ โดยผลตัดสินจะขึ้นอยู่กับว่าพิธีกรทำได้สำเร็จหรือไม่ และอาจมีผู้เชี่ยวชาญเฉพาะด้านเป็นคนตัดสินด้วย
== รายชื่อพิธีกร ==
=== พิธีกรหลัก ===
นิติ ชัยชิตาทร
=== พิธีกรร่วม ===
ส่วนใหญ่เป็นพนักงานในจีเอ็มเอ็มทีวี
สกาว
บุ๊ค
บอม
แก๊งค์
ปอนด์
ฝน
=== ครูผู้สอน ===
ครูเติ้ล FirstDrive – สอนขับรถ
ครูฝน (น้ำฝน ภักดี) Pronality Academy – สอนเก๊กแมน, ปรับบุคลิกภาพ
ครูบิว Yamaha Sukhumvit – สอนเล่นกีต้าร์
เบนจามิน วาร์นี - โค้ชช่วยสอนเล่นกีต้าร์
== ผลซีรีส์ ==
ผลตัดสิน&#x2003; หมายถึง ผ่าน&#x2003; หมายถึง ไม่ผ่าน
== อ้างอิง ==
== แหล่งข้อมูลอื่น ==
จีเอ็มเอ็มทีวี
รายการโทรทัศน์ไทย
รายการโทรทัศน์ที่เริ่มออกอากาศตั้งแต่ พ.ศ. 2561
อีเอฟแอลแชมเปียนชิป เพลย์ออฟ 2018 นัดชิงชนะเลิศ

การแข่งขัน อีเอฟแอลแชมเปียนชิป เพลย์ออฟ 2018 นัดชิงชนะเลิศ จะลงเล่นกันในวันที่ 26 พฤษภาคม พ.ศ. 2561 ที่ สนามกีฬาเวมบลีย์, ลอนดอน. ผู้ชนะจะได้รับการเลือนชั้นสู่ พรีเมียร์ลีก ฤดูกาล 2018–19. สองทีมที่ดีที่สุดของ อีเอฟแอลแชมเปียนชิป ฤดูกาล 2017–18 จะได้รับการเลื่อนชั้นโดยอัตโนมัติขึ้นสู่ พรีเมียร์ลีก, ในขณะที่ทีมวางระหว่างทีมอันดับที่สามและทีมอันดับที่หกในตารางคะแนนลีกจะลงเล่นสองนัดขั้นแรกในซีรีส์ของการเพลย์ออฟ, และสองทีมที่ดีที่สุดของการลงเล่นเพลย์ออฟสำหรับพื้นที่สุดท้ายสำหรับฤดูกาล 2018–19 ในพรีเมียร์ลีก.
ฟูลัมชนะ 1–0, ประตูเดียวของเกมนี้มาจากการทำประตูโดย ทอม แคร์นีย์ ในนาทีที่ 23. It was their first game at Wembley for 43 years since losing the 1975 FA Cup Final.
==เส้นทางสู่นัดชิงชนะเลิศ==
หมายเหตุ: ในผลการแข่งขันทั้งหมดด้านล่างนี้, ผลการแข่งขันของคู่ชิงชนะเลิศจะถูกนำมาเป็นชื่อแรก (H: เหย้า; A: เยือน).
|- style="background:#c1e0ff"
|คู่แข่งขัน
|รวมผลสองนัด
|เลกที่ 1
|เลกที่ 2
|เพลย์ออฟ
|คู่แข่งขัน
|รวมผลสองนัด
|เลกที่ 1
|เลกที่ 2
|-
|align=left|ดาร์บีเคาน์ตี
|2–1
|0–1 (A)
|2–0 (H)
|style="background:#c1e0ff"|รอบรองชนะเลิศ
|align=left|มิดเดิลส์เบรอ
|1–0
|1–0 (H)
|0–0 (A)
|}
==แมตช์==
===รายละเอียด===
{| width=92%
|-
|
|
|}
|style="vertical-align:top; width:50%;"|
{| cellspacing="0" cellpadding="0" style="font-size:90%; margin:auto;"
|-
!width=25| !!width=25|
|-
|GK ||1||แซม จอห์นสโตน
|-
|RB ||27||อะห์มัด อัลมุฮัมมะดี || || 
|-
|CB ||5||เจมส์ เชสเตอร์ || || 
|-
|CB ||26||จอห์น เทร์รี (กัปตัน)
|-
|LB ||21||แอลัน ฮัตตัน || || 
|-
|DM ||15||มิเล เยดินัค || ||  || 
|-
|CM ||10||แจ็ก กรีลิช || || 
|-
|CM ||14||คอนอร์ ฮูริเฮน || || 
|-
|RM ||7||รอเบิร์ต สน็อดกราสส์
|-
|LM ||37||อัลเบิร์ต อาโดมาห์ || || 
|-
|CF ||45||เลวิส แกรบแบน
|-
|colspan=4|ผู้เล่นสำรอง:
|-
|GK ||31||มาร์ก บันน์
|-
|DF ||16||เจมส์ บรี
|-
|MF ||6||เกลนน์ วีแลน
|-
|MF ||18||จอช โอโนมาห์ || || 
|-
|MF ||20||ปีร์กีร์ ปียาร์ตนาซอน
|-
|FW ||9||สกอตต์ โฮแกน || || 
|-
|FW ||22||โฌนาทัน ค็อดเฌีย || || 
|-
|colspan=4|ผู้จัดการทีม:
|-
|colspan="4"|สตีฟ บรูซ
|}
|}
==อ้างอิง==
อีเอฟแอลแชมเปียนชิพ เพลย์ออฟ นัดชิงชนะเลิศ
ฟุตบอลลีกเพลย์ออฟอังกฤษ ฤดูกาล 2018
จำนวนนำโชค

ใน ทฤษฎีการคำนวณ เลข Lucky number เป็น จำนวนธรรมชาติ ที่สร้างโดย ทฤษฎีsieve
คำนี้ถูกใช้ในปี ค.ศ.1956 ในหนังสือพิม  Gardiner, Lazarus, Metropolis และ Ulam

==== กระบวนการ sieving ====
เริ่มจากจำนวนเต็ม เลข1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
นำทุกๆเลขที่2ออก(เลขคู่) จะเหลือแต่เลขคี่
1    3   5    7    9      11     13     15      17     19      21     23      25
นำทุกๆเลขที่ 3 ออก
1    3         7    9              13     15               19      21              25
นำทุกๆเลขที่ 7 ออก
1    3        7     9              13     15                        21               25
ก็จะได้เลขที่เป็น Lucky number
1,3,7,9,13,15,21,25,31,33,37,43,49,51,63,67,69,73,75,79,87,93,99,105,111,115,127,129,133,135,141,151,...
ลำดับจำนวนเต็ม
เนตตา บาร์ซิไล

เนตตา บาร์ซิไล (Netta Barzilai, נטע ברזילי เกิด 22 มกราคม ค.ศ. 1993) หรือบางครั้งรู้จักในชื่อ เนตตา เป็นนักร้องชาวอิสราเอลและศิลปินทำเพลงวน (looping artist) เป็นที่รู้จักในฐานะผู้ชนะในรายการ HaKokhav HaBa ฤดูกาลที่ 5 เธอเป็นตัวแทนประเทศในการประกวดเพลงยูโรวิชัน 2018 ที่จัดขึ้นที่กรุงลิสบอน ประเทศโปรตุเกส กับเพลงที่ชื่อ "Toy" และทำให้เธอชนะเลิศเป็นครั้งที่ 4 ของประเทศ หลังจากในปี 1978, 1979 และ 1998
นักร้องอิสราเอล
ผู้ชนะการประกวดเพลงยูโรวิชัน
ชาวอิสราเอลเชื้อสายโปแลนด์
ชาวอิสราเอลเชื้อสายลิเบีย
ชาวอิสราเอลเชื้อสายโมร็อกโก
ชาวยิวอิสราเอล
อีเอฟแอลลีกวัน เพลย์ออฟ 2018 นัดชิงชนะเลิศ

การแข่งขัน อีเอฟแอลลีกวัน เพลย์ออฟ 2018 นัดชิงชนะเลิศ เป็นแมตช์ฟุตบอลตัดสินกันระหว่าง ชรูว์สบิวรีทาวน์ และ รอเทอร์แฮมยูไนเต็ด. แมตช์นี้จะลงเล่นกันในวันที่ 27 พฤษภาคม พ.ศ. 2561.
==แมตช์==
===รายละเอียด===
{| width=92%
|-
|
|
|}
|style="vertical-align:top; width:50%;"|
{| cellspacing="0" cellpadding="0" style="font-size:90%; margin:auto;"
|-
!width=25| !!width=25|
|-
|GK ||1 || Dean Henderson
|-
|RB ||13|| James Bolton ||  || 
|-
|CB ||22|| Aristote Nsiala
|-
|CB ||5 || Mat Sadler || 
|-
|LB ||6 || Omar Beckles
|-
|RM ||7 || Shaun Whalley || 
|-
|CM ||16|| Bryn Morris || 
|-
|CM ||4 || Ben Godfrey
|-
|LM ||23|| Alex Rodman
|-
|CF ||20|| Jon Nolan
|-
|CF ||9 || Carlton Morris || 
|-
|colspan=4|ผู้เล่นสำรอง:
|-
|GK ||15|| Craig MacGillivray
|-
|DF ||12|| Junior Brown
|-
|DF ||3 || Max Lowe
|-
|DF ||2 || Joe Riley || 
|-
|MF ||19|| Sam Jones
|-
|FW ||14|| Lenell John-Lewis || 
|-
|FW ||45|| Stefan Payne || 
|-
|colspan=4|ผู้จัดการทีม:
|-
|colspan="4"| Paul Hurst
|}
|}
==อ้างอิง==
ฟุตบอลลีกเพลย์ออฟอังกฤษ ฤดูกาล 2018
อีเอฟแอลลีกวัน เพลย์ออฟ นัดชิงชนะเลิศ
วิธีแบ่งครึ่ง

การแบ่งครึ่งช่วง (Bisection method) คือการแบ่งออกเป็นสองส่วนเท่ากันในคณิตศาสตร์เป็นวิธีการหารากที่ซ้ำ ๆ การแบ่งออกเป็นสองส่วนเท่ากันช่วงเวลาและจากนั้นเลือกช่วงย่อยซึ่งรากต้องอยู่ในแนวแกน X สำหรับการประมวลผลต่อไป เป็นวิธีที่ง่ายและมีประสิทธิภาพ แต่ยังค่อนข้างช้า ด้วยเหตุนี้มันจึงมักใช้เพื่อหาแนวทางในการแก้ปัญหาโดยประมาณซึ่งใช้เป็นจุดเริ่มต้นของวิธีการบรรจบกันอย่างรวดเร็วมากขึ้น วิธีการนี้เรียกว่าวิธีการลดช่วงเวลา วิธีการค้นหาแบบไบนารี
== กระบวนการ ==
การเตรียมฟังก์ชัน : จัดรูปให้ฟังก์ชันอยู่ในรูป f(x) = 0
ลำดับที่ 1: ทำการเดาจุดสองจุดคือค่า Xl และค่า Xuสมมุติว่าค่า Xl เป็นค่าที่ต่ำกว่าจากนั้นทดสอบว่า f(Xl) f(Xu) n) เข้าใกล้ 0]]
3.1) ถ้า f(Xl) f(Xr) u= Xr และกลับไปทํา ลำดับที่ 2
3.2) ถ้า f(Xl) f(Xr) > 0 แสดงว่า Root ที่ต้องการอยู่ในครึ่งบน ให้ตั้ง Xl = Xr และกลับไปทํา ลำดับที่ 2
3.3) ถ้า f(Xl) f(Xr) = 0 แสดงว่าคําตอบที่ต้องการเท่ากับ X
=== อัลกอริทึม ===
จากกระบวนการ จะสามารถเขียนเป็นภาษาโปรแกรมไพทอนได้ดังนี้# มีรากเดียว
def fn(x):
return x**3 + 5*x - 9
กำหนดวิธีการแบ่งช่วง
def bisection( eq, segment, app = 0.3 ):
a, b = segment['a'], segment['b']
Fa, Fb = eq(a), eq(b)
if Fa * Fb > 0:
raise Exception('No change of sign - bisection not possible')
while( b - a > app ):
x = ( a + b ) / 2.0
f = eq(x)
if f * Fa > 0: a = x
else: b = x
return x
test
print(bisection(fn, {'a':0,'b':5}, 0.00003)) # => 1.32974624634
===== ตัวอย่าง: การหารากของพหุนาม =====
สมมติว่ามีการใช้วิธีการแบ่งครึ่งช่วง เพื่อหารากของพหุนาม
f(x) = x^3 - x - 2
ประการแรกต้องใช้ตัวเลขสองตัว a และ b เพื่อให้ f(a) และ f(b) มีสัญญาณตรงกันข้าม สำหรับฟังก์ชันข้างต้น a = 1 และ b = 2
เป็นไปตามเกณฑ์นี้เช่น
f(1) = (1)^3 - (1) = -2
และ
f(2) = (2)^3 - 2 = 4
เนื่องจากฟังก์ชันเป็นแบบต่อเนื่องต้องมีรากภายในช่วง [1, 2] ในจุดเริ่มต้นจุดสิ้นสุดของช่วงที่วงเล็บรากเป็น a1 = 1 และ b1 = 2 ดังนั้นจุดกึ่งกลางคือ
c_{1} = \frac{2+1}{2} = 1.5
ค่าฟังก์ชันที่จุดกึ่งกลางคือ f(c1) = (1.5)3 - (1.5) - 2 = -0.125 เนื่องจาก f(c1) เป็นค่าลบ a = 1 จะถูกแทนที่ด้วย a = 1.5 สำหรับการทำซ้ำถัดไปเพื่อให้แน่ใจว่า f(a) และ f(b) มีสัญญาณที่ตรงกันข้าม เช่นนี้ยังคงช่วงระหว่าง a และ b จะกลายเป็นเล็กมากขึ้นบรรจบกับรากของฟังก์ชัน ดูสิ่งนี้เกิดขึ้นในตารางด้านล่าง
ขั้นตอนวิธี