เวียนบังเกิดและความสัมพันธ์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อสมการเชิงเส้นตัวแปรเดียว
Advertisements

โรงเรียนนวมินทราชินูทิศ เตรียมอุดมศึกษาพัฒนาการ
PHPPHP การเขียนโปรแกรมคอมพิวเตอร์ 1 สาขาวิชาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ.
บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
แบบจำลองฐานข้อมูล คือ เครื่องมือในเชิงแนวคิดที่ใช้ในการอธิบาย ข้อมูล
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
Entity-Relationship Model E-R Model
ชื่อเรื่อง : ศึกษาผลการจัดการเรียนรู้ ในรายวิชาการบัญชีบริหาร ด้วยวิธีการเรียนรู้แบบกลุ่มคละผลสัมฤทธิ์ STAD ที่มีต่อผลสัมฤทธิ์ทางการเรียนโดยใช้สถานการณ์จำลองการวางแผนงบประมาณในธุรกิจการผลิตเฟอร์นิเจอร์
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
Pushdown Automata : PDA
หน่วยที่ 5 การเวียนเกิด
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
Project Management by Gantt Chart & PERT Diagram
หน่วยที่ 1 ปริมาณทางฟิสิกส์ และเวกเตอร์
การตรวจสอบคุณภาพเครื่องมือ
เกม คณิตคิดเร็ว.
บทที่ 5 การใช้คำสั่ง Select Case , For Next และ Do While
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยการเรียนที่ 6 เรื่อง การจัดการฐานข้อมูลด้วย PHP Function
อนุกรมอนันต์และการลู่เข้า
สมการเชิงเส้น (Linear equation)
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
บทที่ 7 การหาปริพันธ์ (Integration)
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
Multistage Cluster Sampling
บทที่ 1 ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์
การบัญชีต้นทุนช่วง (Process Costing).
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
กลุ่มคำและประโยค ภาษาไทย ม. ๓
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
บทที่ 4 การอินทิเกรต (Integration)
บทที่ 8 เงื่อนไขตัดสินใจ
เซต (SET) ประวัติย่อของวิชาเซต ความหมายของเซต การเขียนแทนเซต
บทที่ 8 การควบคุมโครงการ
คำสั่ง Create , Insert, Delete, Update
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
พื้นฐานการออกแบบ กราฟิก หมายถึง ศิลปะแขนงหนึ่งซึ่งใช้การสื่อความหมาย ด้วยเส้น สัญลักษณ์ รูปวาด ภาพถ่าย กราฟ แผนภูมิ การ์ตูน ฯลฯ เพื่อให้สามารถสื่อความหมายของข้อมูลได้ถูกต้องตรง.
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
Data storage II Introduction to Computer Science ( )
บริษัท พัฒนาวิชาการ (2535) จำกัด
State Table ตารางสถานะ ปรับปรุง 18 เมษายน 2562
สมการพหุนาม ที่มีความซับซ้อนมากขึ้น
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
คณิตศาสตร์ 1 รหัสวิชา
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
Data storage II Introduction to Computer Science ( )
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 5 : ความสัมพันธ์และฟังก์ชัน
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
การวิจัยทางการท่องเที่ยว
การเปลี่ยนแปลงประมาณการทางบัญชี และข้อผิดพลาด
งานนำเสนอสำหรับโครงการ นิทรรศการวิทยาศาสตร์
ค่ารูรับแสง - F/Stop ค่ารูรับแสงที่มีค่าตัวเลขต่ำใกล้เคียง 1 มากเท่าไหร่ ค่าของรูรับแสงนั้นก็ยิ่งมีความกว้างมาก เพราะเราเปรียบเทียบค่าความสว่างที่ 1:1.
บทที่ 10 การแบ่งปัญหาใหญ่ออกเป็นปัญหาย่อยและการสร้างลำดับขั้นตอนย่อย
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
Chapter 3 : Array.
ฟังก์ชันของโปรแกรม Computer Game Programming
การเติบโตของฟังก์ชัน (Growth of Functions)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
กระดาษทำการ (หลักการและภาคปฏิบัติ)
การใช้ระบบสารสนเทศในการวิเคราะห์ข่าว
ใบสำเนางานนำเสนอ:

เวียนบังเกิดและความสัมพันธ์ ตัวอย่าง ลำดับ S ถูกกำหนดอย่างวนซ้ำโดย 1. S(1) = 2 2. S(n) = 2S(n-1) สำหรับ n2 ในข้อความที่ 1 หรือ S(1) เป็นวัตถุชิ้นแรกในลำดับ S คือ 2 ส่วนข้อความที่ 2 เป็นวัตถุชิ้นที่ 2 ใน S คือ S(2) = 2S(2-1) = 2(2) = 4 และโดยข้อความที่ 2 เช่นกัน S(3) = 2S(3-1) = 2S(2) = 2(4) = 8 ส่วนวัตถุในลำดับถัดไปก็สามารถคำนวณได้ในลักษณะเดียวกัน เราจะเห็นว่าลำดับ S คือ 2, 4, 8, 16, 32, ... จากตัวอย่างเป็นการกำหนดค่าของลำดับด้วยเทอมหรือพจน์ก่อนหน้า ซึ่งถูกเรียกว่า “ความสัมพันธ์เวียนบังเกิด (Recurrence relation)”

ความสัมพันธ์เวียนบังเกิด นิยาม ความสัมพันธ์เวียนบังเกิดของลำดับ a0, a1, a2, ... คือสมการที่แสดงความสัมพันธ์พจน์ที่ n กับพจน์ที่อยู่ข้างหน้า จากตัวอย่าง S(n) = 2S(n-1) เมื่อกล่าวถึงผลเฉลยของความสัมพันธ์นี้จะหมายถึงฟังก์ชันที่อยู่ในรูป an = g(n) ซึ่งเป็นฟังก์ชันของ n และสอดคล้องกับความสัมพันธ์เวียนบังเกิดนั้นๆ

ฟังก์ชันเวียนบังเกิด จากนิยามฟังก์ชันเวียนบังเกิดมีสองขั้นตอน โดยฟังก์ชันนี้จะกำหนดบนเซตของจำนวนเต็มที่ไม่เป็นลบและโดเมนของฟังก์ชันคือ เงื่อนไขเบื้องต้น: กำหนดค่าของฟังก์ชันไว้ที่ศูนย์ การเวียนบังเกิด: เตรียมกฎสำหรับหาค่าของฟังก์ชันที่จำนวนเต็มใดๆจากค่าของฟังก์ชันด้วยจำนวนเต็มที่น้อยกว่า จะเห็นว่านิยามของฟังก์ชันเวียนบังเกิดมีรูปแบบเดียวกับการอุปนัย ตัวอย่างให้หาจำนวนฟิโบนักซี f2, f3, f4, และ f5 เมื่อ เงื่อนไขเบื้องต้น: f1=0 และ f1=1 การเวียนบังเกิด: fn = fn-1 + fn-2

เซตเวียนบังเกิด เซตก็สามารถกำหนดการเวียนบังเกิดได้เช่นเดียวกับฟังก์ชันและลำดับนั่นคือ เงื่อนไขเบื้องต้น: กำหนดกลุ่มเริ่มต้นของสมาชิก การเวียนบังเกิด: กฎของการสร้างสมาชิกใหม่ของเซตจากสมาชิกเดิม ในขั้นตอนของการเวียนบังเกิดที่ใช้สร้างสมาชิกใหม่ ในบางครั้งอาจจะต้องใช้กฎของการตัดออกตามความเหมาะสมของเงื่อนไข ตัวอย่าง พิจารณาเซตย่อย S ที่เป็นเซตของจำนวนเต็มที่กำหนดโดย เงื่อนไขเบื้องต้น: 3S การเวียนบังเกิด: if xS and yS, then x+yS สมาชิกใหม่ที่สร้างจากเงื่อนไขเบื้องต้นคือ 3+3=6 ตัวถัดไป 3+6=9ตัวถัดไป 3+9=6+6=12 และตัวอื่นๆ ก็กำหนดได้ตามขั้นของการเวียนบังเกิด

อัลกอริทึมเวียนบังเกิด การหาผลเฉลยของพจน์ที่ n ของลำดับ S(n) จากตัวอย่างที่แล้วสามารถหาได้สองวิธี การวนซ้ำในรูปแบบของคำสั่งลูปหรือวงวน (Loop) คำนวณ S(n) โดยใช้นิยามการเวียนบังเกิดของลำดับ S โดยตรง อัลกอริทึม 1 การแทนลำดับด้วยการวนซ้ำ int S(int n) /* เป็นการคำนวณแบบซ้ำๆของจำนวนเต็ม S(n) สำหรับลำดับ S ในตัวอย่างที่ 19 */ {        int j; /* ดัชนีของวงวน */           int CurrentValue; /* ค่าปัจจุบัน */          if (n==1)                S = 2;          else     {     j = 2;               CurrentValue = 2;               while (j <= n)              {         CurrentValue = 2*CurrentValue;                      j = j + 1; }      }         S = CurrentValue;         return S; เงื่อนไขเบื้องต้น วงวน while แทนการสมมุติฐาน อุปนัย

การแทนลำดับด้วยนิยามการเวียนบังเกิด นิยาม อัลกอริทึมที่ถูกเรียกว่าเป็นอัลกอริทึมเวียนบังเกิดถ้า อัลกอริทึมนั้นแก้ปัญหาโดยการลดขนาดของปัญหาให้เล็กลงด้วยอินพุตที่น้อยลงกว่าเดิม อัลกอริทึม 2 การแทนลำดับด้วยนิยามการเวียนบังเกิด int S_recursive(int n) {         if (n == 1)               S = 2;         else               S = 2*S_recursive(n-1);         return S; }

อัลกอริทึมที่ 3 นิยามการคูณแบบเวียนบังเกิด int Product(int m, int n) {         if (n==1)                  p = m;         else                  p = Product(m, n-1) + m;         return p; }

ศักยภาพของอัลกอริทึมการเวียนบังเกิด ความซับซ้อนของอัลกอริทึมเวียนบังเกิดเชิงเวลาส่วนใหญ่จะขึ้นอยู่กับจำนวนการเรียกซ้ำ (ซึ่งจะขึ้นอยู่กับจำนวนข้อมูล) อัลกอริทึมเวียนบังเกิดอ่านเข้าใจได้ง่ายกว่าการวนซ้ำด้วยการใช้วงวน อย่างไรก็ตาม จากการที่อัลกอริทึมเวียนบังเกิดขึ้นอยู่กับจำนวนข้อมูล เมื่อข้อมูลมีเป็นจำนวนมาก อัลกอริทึมนี้ก็จะใช้หน่วยความจำจำนวนมากตามข้อมูล เนื่องจากการเรียกตัวเองแต่ละครั้งก็จะมีการเก็บไว้ใน stack แต่ถ้ามีการออกแบบให้เหมาะสมอย่างอัลกอริทึมการค้นหาข้อมูลแบบทวิภาคต่อไปนี้ ก็จะช่วยเพิ่มศักยภาพของการเวียนบังเกิดได้

การแก้ปัญหาความสัมพันธ์เวียนบังเกิด เทคนิคอย่างหนึ่งที่ใช้ในการแก้ปัญหาความสัมพันธ์เวียนบังเกิดคือ การขยาย การคาดเดา และการตรวจสอบ วิธีที่ใช้เพื่อขยายพจน์ความสัมพันธ์เวียนบังเกิดอย่างซ้ำๆ จนสามารถคาดเดารูปแบบของพจน์ที่ n ได้ และสุดท้ายการคาดเดาก็จะถูกตรวจสอบความถูกต้องโดยอุปนัยทางคณิตศาสตร์ ตัวอย่าง การหาสูตรสำเร็จ (Closed-form solution) ของความสัมพันธ์เวียนบังเกิดต่อไปนี้

ตัวอย่างการหา Closed-Form Solution จากนิยามของความสัมพันธ์เวียนบังเกิดคือ ลำดับ S ของค่าใดๆ สามารถแทนได้โดยการคูณ S(n) กับ S(n-1) และเราใช้นิยามนี้กับค่า n, n-1, n-2,… นั่นคือ เมื่อพิจารณารูปแบบที่เกิดขึ้นจากการลองเปลี่ยนค่า n เราคาดเดาหลังจากขยายค่าไป k พจน์ ก็จะได้สมการที่อยู่ในรูป

ตัวอย่าง ...ต่อถึงการตรวจสอบ เมื่อการขยายพจน์นี้ไปเรื่อยๆ จนกระทั่งจำนวนพจน์ k มากพอที่จะทำให้ n–k = 1 นั่นคือ k = n – 1 ที่จุดนี้เราจะได้ว่า เราจะต้องยืนยันสูตรสำเร็จของเราโดยการอุปนัยในค่าของ n สำหรับเงื่อนไขเบื้องต้น S(1)=21 ซึ่งเป็นจริงด้วยสมการที่ (1) แล้วตั้งข้อสมมุติฐานว่า S(k)=2k ดังนั้น

รูปแบบทั่วไปของฟังก์ชันเวียนบังเกิด ความสัมพันธ์เวียนบังเกิดสำหรับลำดับ S(n) ที่เป็นเชิงเส้น ถ้าสัมประสิทธิ์ของ S ในนิยามมีเพียงตัวยกกำลังตัวแรก ความสัมพันธ์เวียนบังเกิดเชิงเส้นในรูปแบบทั่วไปจะอยู่ในรูป โดยที่ fi และ g เป็นพจน์ที่เกี่ยวข้องกับ n ความสัมพันธ์เวียนบังเกิดมีสัมประสิทธิ์เป็นค่าคงที่ถ้า fi ทุกเทอมเป็นค่าคงที่ และจะเป็นอันดับที่หนึ่งถ้าพจน์ที่ n มีเพียงพจน์ที่ n–1 ความสัมพันธ์เวียนบังเกิดอันดับที่หนึ่งที่เป็นเชิงเส้นและมีสัมประสิทธิ์เป็นค่าคงที่ก็จะลดรูปเหลือเพียง สุดท้ายความสัมพันธ์เวียนบังเกิดจะเป็นเอกพันธ์ (Homogeneous) ถ้า g(n) = 0 สำหรับ n ทุกตัว

Program Correctness What is Correctness? Correctness: partial correctness + termination Partial correctness: Program implements its specification

Proving Partial Correctness Goal: prove that program is partially correct Approach: model computation with predicates – Predicates are boolean functions over program state Simple example – {odd(x)} a = x {odd(a)} Generally: {P} S {Q}, where – P is a precondition – Q is a postcondition – S is a set of programming language statements

การตรวจสอบความถูกต้องของโปรแกรม นิยาม โปรแกรมหรือส่วนของโปรแกรม S ที่กล่าวได้ว่า “มีความถูกต้องเป็นบางส่วนเมื่อเทียบกับ (Partially Correct with respect to” ข้ออ้างเบื้องต้น (Initial Assertion: p) และข้ออ้างสุดท้าย (Final Assertion: q) เมื่อไร p เป็นจริงสำหรับค่าต่างๆ ของอินพุตที่จะประมวลเข้ากับข้อความ S จนสิ้นสุด จะทำให้ q เป็นจริงด้วย สัญลักษณ์ p{S}q จะแสดงว่าโปรแกรมหรือส่วนของโปรแกรม S มีความถูกต้องบางส่วนเมื่อเทียบกับข้ออ้างเบื้องต้น p กับข้ออ้างสุดท้าย q

ตัวอย่างการตรวจสอบความถูกต้อง ตัวอย่าง จงแสดงส่วนของโปรแกรม S y := 2 z := x + y มีความถูกต้องเมื่อเทียบกับข้ออ้างเบื้องต้น p:x=1 และข้ออ้างสุดท้าย q:z=3 วิธีทำ สมมุติว่า p เป็นจริงนั่นคือ x=1 (ค่าเริ่มต้น) เมื่อส่วนของโปรแกรม S เริ่มทำงาน y จะถูกกำหนดค่าให้เท่ากับ 2 และ z จะถูกกำหนดโดยผลรวมของ x และ y ซึ่งทำให้ z=3 เพราะฉะนั้นส่วนของโปรแกรม S จะมีความถูกต้องเมื่อเทียบกับข้ออ้างเบื้องต้นและข้ออ้างสุดท้ายที่อยู่ในรูป p{S}q เป็นจริง

กฎการอนุมาน เมื่อโปรแกรม S ถูกแบ่งออกเป็นโปรแกรมย่อย S1 และ S2 ที่เขียนอยู่ในรูป S = S1; S2 เพื่อแสดงว่า S ประกอบด้วยโปรแกรมย่อย S1 และตามด้วยโปรแกรมย่อย S2 สมมุติว่าความถูกต้องของ S1 เมื่อเทียบกับข้ออ้างเบื้องต้น p และข้ออ้างสุดท้าย q ส่วนความถูกต้องของ S2 เมื่อเทียบกับข้ออ้างเบื้องต้น q และข้ออ้างสุดท้าย r เมื่อเป็นเช่นนี้ถ้า p เป็นจริงและ S1 ถูกประมวลผลจนจบแล้ว q เป็นจริง และ q ที่เป็นจริงนี้ถูกส่งต่อให้ S2 ประมวลผลจนจบแล้ว r เป็นจริง การดำเนินการทั้งหมดนี้ถูกเรียกว่า “Composition Rule ที่เขียนอยู่ในรูป p{S1}q q{S2}r p{S1 ; S2}r

if Axiom Rule: P If B then S Q

ข้อความที่มีเงื่อนไข IF if condition then S ที่นำไปสู่กฎการอนุมานที่อยู่ในรูป (p  condition){S}q (p  condition )  q p { if condition then S} q ตัวอย่าง จงตรวจสอบ if x>y then y := x ว่ามีความถูกต้องเมื่อเทียบกับข้ออ้างเบื้องต้น T และข้ออ้างสุดท้าย y  x

IF-ELSE if condition then S1 else S2 ที่นำไปสู่กฎการอนุมานที่อยู่ในรูป (P  condition){S1}Q (P  condition ) {S2} Q P { if condition then S1 else S2} Q

IF-ELES ตัวอย่าง จงตรวจสอบ if x<0 then abs := -x else abs := x ว่ามีความถูกต้องเมื่อเทียบกับข้ออ้างเบื้องต้น T และข้ออ้างสุดท้าย abs = |x|

If-else (ต่อ) Then part: need to show Example: Else part: need to show {P ∧ (x<0)} x=-x;y=x {y = |x|} {x = |x|} y = x {y = |x|} {-x = |x|} x = -x {x = |x|} ( P ∧ x <0) ⇒ -x = |x| Else part: need to show {P ∧ ¬ (x<0)} y=x {y = |x|} {x =|x|} y=x {y=|x|} ( P ∧ ¬(x < 0)) ⇒ x = |x| P ≡ true Example: 1. if x < 0 then { 2. x = -x; 3. y = x 4. } else { 5. y = x 6. } {y = |x|}

Loop Invariants while condition S ที่มีกฎการอนุมานอยู่ในรูป (p  condition){S}p p { while condition S} (condition  p)

ตัวอย่าง i:=1 factorial := 1 while i<n i := i+1 factorial := factorial*i end จบด้วย factorial = n! เมื่อ n เป็นจำนวนเต็มบวก

ตัวอย่าง ให้ตรวจสอบความถูกต้องของโปรแกรม S ที่ใช้คำนวณผลคูณของจำนวนเต็มบวก จุดประสงค์คือเพื่อพิสูจน์ว่าหลังจากโปรแกรม S ถูกประมวลผลแล้วจะได้ product มีค่าเป็น mn การพิสูจน์ความถูกต้องทำได้โดยการแบ่งโปรแกรม S ออกเป็น S = S1; S2; S3; S4