ข้ามไปยังเนื้อหา

T.11 · ส่วนประกอบที่อ่อน Invariant ของลูป และการติดตามแผนภูมิกระแส

GRE Subject Test · GRE Mathematics · หัวข้อ 26

ดูสไลด์ ฝึกฝน
บทเรียนวิดีโอสำหรับหัวข้อนี้ เปิดหน้าวิดีโอ
7:36

T.11 · ส่วนประกอบที่อ่อน Invariant ของลูป และการติดตามแผนภูมิกระแส

ความรู้พื้นฐาน: สัมประสิทธิ์ทวินาม, ส่วนเสริม และการติดตามการมอบหมาย

การบรรยายภาษาอังกฤษ · คำบรรยายภาษาอังกฤษ + 中文 ลอยตัวบนภาพ

26

ขอบเขตและเงื่อนไขก่อนเข้าเรียน

เตรียมสอบ GRE ระดับปริญญาตรี วัตถุประสงค์ภายในขอบเขต ETS ที่ทบทวนนี้คือการสอนต้นฉบับ ไม่ใช่การทดสอบหรือตัวทำนายคะแนนอย่างเป็นทางการ

ความรู้พื้นฐาน: สัมประสิทธิ์ทวินาม, ส่วนเสริม และการติดตามการมอบหมาย

  • นับการจัดสรรที่ไม่สามารถแยกแยะได้ด้วยข้อจำกัดเป็นเลขจำนวนเต็มไม่ลบหรือบวก
  • ติดตามแผนผังขั้นตอนตามลำดับคำสั่งพร้อมพฤติกรรมรีเซ็ตที่ถูกต้อง
  • ใช้ invariant ของลูปและขนาดความก้าวหน้าเพื่อยืนยันอัลกอริทึม

การจัดแบ่งแบบอ่อน (Weak composition): การจัดเรียงแบบมีลำดับของผลรวมเป็นส่วนที่เป็นเลขจำนวนเต็มไม่ลบ

invariant ของลูป (Loop invariant): คุณสมบัติที่ถูกรักษาไว้ก่อนและหลังแต่ละรอบของลูป

คำศัพท์ ฝึกฝน
English ไทย
weak composition/wiːk ˌkɒmpəˈzɪʃn/ การแยกส่วนแบบอ่อน
loop invariant/luːp ɪnˈveərɪənt/ ตัวแปรคงที่ของวงวน
26

เลือกใช้วิธีและให้เหตุผลประกอบ

จำนวนคำตอบที่เป็นเลขจำนวนเต็มไม่ลบของ x₁+⋯+x_k=n คือ C(n+k−1,k−1), สำหรับ n≥0 และ k≥1 แสดง n ดาวเหมือนกันแยกเข้ากล่องที่มีชื่อ k กล่องโดยใช้แท่งกั้น k−1 แท่ง; แท่งติดกันและแท่งปลายอนุญาตให้มีค่าเป็นศูนย์ กล่องสามารถแยกแยะกันได้ วัตถุไม่สามารถแยกแยะได้ การนับtoken ที่แตกต่างกันจะกำหนดให้แต่ละ token อย่างอิสระ ทำให้ได้ k^n ก่อนข้อจำกัดอื่น ๆ ตัดสินใจโมเดลจากสิ่งที่วัตถุและผู้รับแทน ไม่ใช่จากสัมประสิทธิ์ทวินามที่ดูคุ้นเคย

สำหรับการจัดสรรค่า x_i ≥ 1 ที่เป็นบวก ให้กำหนด z_i = x_i − 1; ผลรวมที่เหลือคือ n−k ซึ่งจะได้ C(n−1, k−1) เมื่อ n≥k การหาขอบเขตล่างที่กว้างขึ้น x_i ≥ a_i สามารถจัดการได้โดยการลบแต่ละ a_i ออก หากมีอย่างน้อยหนึ่งศูนย์ จะเท่ากับส่วนเสริมของกรณีที่มีค่าบวกทั้งหมด: นำ C(n−1, k−1) ไปลบออกจากผลรวมที่เป็นเลขไม่ลบติด แต่กรณีซ้อนทับเช่น กล่องว่างพอดีสองกล่อง ต้องใช้วิธีการนับที่ต่างกัน; การลบแต่ละกรณีกล่องว่างออกอย่างอิสระจะทำให้การตัดซ้อนทับถูกนับซ้ำ

ติดตามแผนภาพการไหลโดยดำเนินการตามคำสั่งทีละบรรทัด และบันทึกค่าตัวแปรในตาราง แยกแยะระหว่างการจัดค่า (assignment) และการทดสอบความเท่ากันทางคณิตศาสตร์; ด้านขวาของการจัดค่าจะใช้ค่าเก่าก่อนการแทนที่ บันทึกว่าสาขาใดจะทำงานต่อไปและตัวแปรใดถูกรีเซ็ต ผู้เข้าแข่งขันรอบนอกใหม่อาจรีเซ็ตผลรวมภายในโดยไม่รีเซ็ตผู้เข้าแข่งขันนั้น สำหรับกระบวนการที่เพิ่ม 1,3,5,… ไปยัง S จากศูนย์ หลังจาก m ครั้งการเพิ่ม S=m² และตัวเพิ่มถัดไปคือ 2m+1

A loop invariant is true before and after each iteration. The square-sum invariant holds initially at m=0 and is preserved because m²+(2m+1)=(m+1)². An invariant alone does not prove termination. To test whether an integer N≥0 is square by adding odd numbers until S≥N, S grows without bound; equivalently m increases and must reach a bound such as N. At exit, equality means square and overshoot means nonsquare. A printed value must be reached on an actual execution path; a plausible numerical pattern alone is not a trace.

26

ตัวอย่างเหตุผลประกอบ

กระจาย 11 token เหมือนกันเข้าไปใน 4 กล่องที่มีชื่อ การจัดสรรที่ไม่ลบมีจำนวน C(14,3)=364; การจัดสรรที่เป็นบวกทั้งหมดมีจำนวน C(10,3)=120 ดังนั้น 244 การจัดสรรจะมีอย่างน้อยหนึ่งช่องว่างสำหรับการทดสอบผลบวกคี่ด้วย N=10, S ก้าวไป 0,1,4,9,16; มันเกินเป้าหมายและปฏิเสธ 10 สำหรับ N=9 มันออกจากวงลูปที่ S=9 หลังเพิ่มสามครั้ง จำนวนที่จะเพิ่มต่อไปคือ 1,3,5,7,9; คอลัมน์ผลรวมและจำนวนที่จะเพิ่มต่อไปต้องไม่สับสน

ตารางสำหรับลูปผลบวกเลขคี่: หลัง m รอบผลรวม S คือ m² และค่าที่จะบวกถัดไป B คือ 2m + 1
ลูปอินเวเรียนต์ S = m² เป็นจริงก่อนการบวกแต่ละครั้ง
26

Conditions and counterexamples

วัตถุ identical และ distinct ใช้โมเดลต่างกัน กล่องว่างอย่างน้อยหนึ่งกล่องไม่เท่ากับมีเพียงหนึ่งกล่อง ใน flowchart ต้องรักษาลำดับการอัปเดตและรีเซ็ตเฉพาะตัวแปรที่เส้นทางที่ถูกดำเนินการรีเซ็ตจริง ๆ เท่านั้น

26

การประยุกต์ใช้แบบมีคำแนะนำ

นับคำตอบที่ไม่ลบติดของ $a+b+c=8$ ภายใต้เงื่อนไข $a\ge2$ มีกี่กรณีที่มี $b,c\ge1$? ในกลุ่มแรกมีกี่กรณีที่มี b หรือ c อย่างน้อยหนึ่งตัวเท่ากับศูนย์?

วิธีทำตัวอย่าง

ใส่ $u=a-2$ จากนั้น $u+b+c=6$ มี $\binom82=28$ วิธีแก้ที่เป็นบวกหรือศูนย์ เมื่อกำหนดให้ b,c เป็นบวกและลบหนึ่งออกจากแต่ละตัวจะได้ทั้งหมดสี่วิธีในสามตัวแปรที่เป็นบวกหรือศูนย์ นับโดย $\binom62=15$ จำนวนวิธีส่วนเสริมคือ $28-15=13$ โดยตรง b=0 ได้เจ็ด c=0 ได้เจ็ด และทั้งคู่เป็นศูนย์ถูกนับสองครั้ง ทำให้ได้ $7+7-1=13$

26

การถ่ายโอนแบบอิสระ

ติดตามอัลกอริทึมนี้สำหรับ N=15 และ N=16: เริ่มต้น S=0, k=1; mientras S<N, ทำ S=S+k, แล้ว k=k+2; รายงานว่า S=N กำหนด invariant และอธิบายเหตุผลของการหยุดทำงานสำหรับจำนวนเต็ม $N\ge0$

ตรวจสอบหลังทำแบบฝึกหัดแล้ว

หลังจาก m รอบ execution, $S=m^2$ และ $k=2m+1$. คู่ trace (S,k) คือ $(0,1),(1,3),(4,5),(9,7),(16,9)$. ดังนั้น 15 ถูกปฏิเสธด้วยการเกินขอบเขตและ 16 ถูกยอมรับ. Invariant มีค่าเริ่มต้นและมีอยู่ต่อเนื่องเนื่องจาก $m^2+(2m+1)=(m+1)^2$. ผลรวมเติบโตไม่มีที่สิ้นสุดดังนั้นจึงไปถึงหรือเกิน N ในที่สุด; ตัวอย่างเช่น m=N เพียงพอเมื่อ N เป็นบวก สำหรับ N=0 วงลูปจะถูกข้ามและความเท่ากันจะเป็นจริง Invariant เพียงอย่างเดียวจะไม่สร้างความมั่นใจเรื่องการหยุดทำงาน

บทเรียนเชิงโต้ตอบสำหรับหัวข้อนี้

ทำทีละขั้นตอน พร้อมแบบฝึกหัดตรวจสอบผลทันที

หัวข้อเพิ่มเติมใน GRE Subject Test · GRE Mathematics

เข้าสู่ระบบหรือสร้างบัญชี

IGCSE, A-Level & AP