การเติบโตของฟังก์ชัน (Growth of Functions)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
เฉลย (เฉพาะข้อแสดงวิธีทำ)
Advertisements

การผลิตบ่อพัก ทำเอง ใช้เอง หจก. มภัสกาญ คอนสตรัคชั่น
อสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
โรงเรียนนวมินทราชินูทิศ เตรียมอุดมศึกษาพัฒนาการ
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
เป็นหลักสำคัญในการนำเสนอเนื้อหา ของบทเรียนคอมพิวเตอร์ช่วยสอนก็คือ ควร นำเสนอภาพที่เกี่ยวข้องกับเนื้อหา ประกอบ กับคำอธิบายสั้นๆ ง่ายๆ แต่ได้ใจความ การใช้ภาพประกอบจะทำให้ผู้เรียน.
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
Pushdown Automata : PDA
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
หน่วยที่ 2 Introduction to Algorithm Analysis
พยาบาลวิชาชีพชำนาญการพิเศษ
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
การจัดเก็บข้อมูลในแฟ้มข้อมูลธรรมดา นั้น อาจจำเป็นที่ใช้แต่ละคน จะต้องมีแฟ้มข้อมูลของตนไว้เป็นส่วนตัว จึง อาจเป็นเหตุให้มีการเก็บข้อมูล ชนิดเดียวกันไว้หลาย.
วิธีการเลือกซื้อ คอมพิวเตอร์. เนื้อหาในส่วนนี้จะให้รายระเอียดและขั้นตอน ในการเลือกซื้อ เครื่องคอมพิวเตอร์ เพื่อให้เราได้เครื่อง คอมพิวเตอร์ที่ตรงกับความ.
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts.
หน่วยที่ 1 ปริมาณทางฟิสิกส์ และเวกเตอร์
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การทำ Normalization 14/11/61.
แรงแบ่งได้เป็น 2 ลักษณะ คือ 1. แรงสัมผัส ( contact force )
องค์ประกอบและเทคนิคการทำงาน
อนุกรมอนันต์และการลู่เข้า
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
สมการเชิงเส้น (Linear equation)
บทที่ 5 เครื่องมือสืบค้นข้อมูล (Search Engine)
บทที่ 7 การหาปริพันธ์ (Integration)
BC320 Introduction to Computer Programming
แนวทางการออกแบบโปสเตอร์
อาจารย์อภิพงศ์ ปิงยศ บทที่ 4 : สื่อกลางส่งข้อมูลและการมัลติเพล็กซ์ (Transmission Media and Multiplexing) Part3 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ.
โครงสร้างภาษา C Arduino
กลุ่มคำและประโยค ภาษาไทย ม. ๓
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
ประเภทแผ่นโปร่งใส (แผ่นใส) รายวิชา ออปแอมป์และลิเนียร์ไอซี
บทที่ 4 การอินทิเกรต (Integration)
เซต (SET) ประวัติย่อของวิชาเซต ความหมายของเซต การเขียนแทนเซต
ชุดที่ 1 ไป เมนูรอง.
คำสั่ง Create , Insert, Delete, Update
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
โครงการจัดทำระบบฐานข้อมูล วัตถุเสพติดของกลาง (ระยะที่1)
Data storage II Introduction to Computer Science ( )
2. ประโยคเงื่อนไข ข้อความที่ประกอบด้วย 2 ข้อความที่เชื่อมต่อกันด้วย ถ้า... แล้ว... เรียกข้อความในลักษณะเช่นนี้ว่า ประโยคเงื่อนไข - เรียกข้อความที่ตามหลัง.
สมการพหุนาม ที่มีความซับซ้อนมากขึ้น
บทที่7 ทฤษฎีกราฟเบื้องต้น
คณิตศาสตร์ 1 รหัสวิชา
สร้างภูมิคุ้มกัน (แสงหิ่งห้อย)
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
บทที่ 5 : ความสัมพันธ์และฟังก์ชัน
กิตติกรรมประกาศ งานวิจัยนี้สำเร็จได้ด้วยความอนุเคราะห์ของบุคคลหลายท่านซึ่งไม่สามารถกล่าวไว้ในที่นี้ได้ทั้งหมดทุกท่าน ซึ่งท่านแรก ผู้จัดทำต้องขอขอบคุณ.
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
อัตราการเกิดปฏิกิริยาเคมี อ.ปิยะพงศ์ ผลเจริญ
Data storage II Introduction to Computer Science ( )
BASIC STATISTICS MEAN / MODE / MEDIAN / SD / CV.
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
การเคลื่อนที่แบบโปรเจคไตล์ (Projectile Motion) จัดทำโดย ครูศุภกิจ
งานนำเสนอสำหรับโครงการ นิทรรศการวิทยาศาสตร์
2 โครงสร้างข้อมูลแบบสแตก (STACK).
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
บทที่ 5 พัลส์เทคนิค
โครงการถ่ายทอดเทคโนโลยีถนนรีไซเคิลเพื่อลดขยะพลาสติกใน 4 ภูมิภาค
ทายสิอะไรเอ่ย ? กลม เขียวเปรี้ยว เฉลย ทายสิอะไรเอ่ย ? ขาว มันจืด เฉลย.
กำหนดการเชิงเส้น : การแก้ปัญหาด้วยวิธีกราฟ
ใบสำเนางานนำเสนอ:

การเติบโตของฟังก์ชัน (Growth of Functions)

อันดับการเติบโต การเติบโตของฟังก์ชันตามจำนวนอินพุต เราจำเป็นจะต้องทราบการวัดอย่างหยาบๆ ว่าฟังก์ชันโตเร็วขนาดไหน ถ้า f(x) มีการเติบโตเร็วกว่าฟังก์ชัน g(x) ดังนั้นในที่สุดลิมิตแล้ว f(x) จะโตว่า g(x) เสมอ สำหรับค่าของ x ที่มากเพียงพอ การประยุกต์ใช้งาน สมมุติว่าคุณกำลังออกแบบเว็บไซต์เพื่อประมวลผลข้อมูลของผู้ใช้ โดยที่มีผู้ใช้จำนวนมาก เช่นข้อมูลทางด้านการเงิน และในการค้นหาข้อมูลด้วยโปรแกรม A ใช้เวลา fA(n)=30n+8 microseconds สำหรับการประมวลผลใดๆ กับข้อมูล n records ในขณะที่โปรแกรม B ใช้เวลา fB(n)=n2+1 microseconds เพื่อประมวลผลข้อมูล n records เช่นกัน ต้องการทราบว่าคุณจะเลือกโปรแกรมใด เมื่อคุณรู้ว่ามีผู้ใช้ข้อมูลนี้เป็นล้านคน

พิจารณาอันดับการเติบโตของฟังก์ชัน เมื่อพิจารณาการเติบโตของฟังก์ชันจากอันดับ จากกราฟเมื่อการใช้ข้อมูลเพิ่มขึ้น จะเห็นว่าเวลาที่ใช้ในการประมวลผลข้อมูลในแต่ละโปรแกรมเพิ่มขึ้นตามอันดับของฟังก์ชัน fA(n)=30n+8 Value of function  fB(n)=n2+1 Increasing n 

แนวคิดของอันดับกับการเติบโต จากฟังก์ชัน fA(n)=30n+8 จะเห็นว่าอันดับของฟังก์ชันนี้เท่ากับหนึ่ง นั่นคือการเติบโตของฟังก์ชันจะขึ้นอยู่กับขนาดของ n ส่วนฟังก์ชัน fB(n)=n2+1 จะมีอันดับของโพลิโนเมียลเท่ากับ 2 นั่นคือการเติบโตของฟังก์ชันจะขึ้นอยู่กับขนาดของ n2 การเติบโตของฟังก์ชันมักจะถูกอธิบายด้วยสัญลักษณ์พิเศษที่เรียกว่า “บิ๊กโอ (Big O)” ซึ่งจะเขียนแทนด้วยสัญลักษณ์ O(f(x)) ดังนั้นจากทั้งสองฟังก์ชันข้างต้นสามารถอธิบายด้วยสัญลักษณ์นี้ได้ว่า อันดับของ O(n2) จะมีอัตราเติบโตเร็วกว่า O(n)

บิ๊กโอ นิยาม ให้ f และ g เป็นฟังก์ชันจากเซตของจำนวนเต็มหรือเซตของจำนวนจริงที่ทอดค่าไปยังเซตของจำนวนจริง กล่าวได้ว่า f(x) เป็น O(g(x)) ถ้ามีค่าคงที่ C และ k ที่สัมพันธ์กันในรูป |f(x)|C|g(x)|เมื่อไรก็ตามที่ x>k ซึ่งอ่านว่า “f(x) เป็นบิ๊กโอของ g(x)” จากนิยามจะเห็นว่า {f:RR | C,k: x>k: f(x)  Cg(x)} หรือ “f เป็นอันดับอย่างมากที่สุดของ g”, “f(x) เป็นบิ๊กโอของ g(x)” “f (x) = O(g (x))” ซึ่งที่กล่าวมาทั้งหมดมีความหมายเหมือนกับว่า fO(g) อันที่จริงแล้วในเรื่องนี้จะใช้คำว่า “อย่างมากที่สุดหรือ at most”

ตัวอย่างบิ๊กโอ จงแสดงว่า f(x) = x2 + 2x + 1 คือ O(x2) x < x2 และ 1 < x2 เมื่อ x>1 ซึ่งจะได้ว่า 0  x2 + 2x + 1  x2 + 2x2 + x2 = 4x2 จากนิยามจะได้ว่า C = 4 และ k = 1 ดังนั้นสิ่งที่ยืนยันว่า f(x) คือ O(x2) นั่นคือ f(x) = x2 + 2x + 1 < 4x2 เมื่อ x>1 ส่วนกรณีอื่นๆ เช่น เมื่อ x>2 เรามี 2x<x2 และ 1 < x2 เมื่อ x>2 ซึ่งจะได้ว่า 0  x2 + 2x + 1  x2 + x2 + x2 = 3x2 จากนิยามจะได้ว่า C = 3 และ k = 2 ดังนั้นสิ่งที่ยืนยันว่า f(x) คือ O(x2) นั่นคือ f(x) = x2 + 2x + 1 < 3x2 เมื่อ x>2 คุณเห็นข้อแตกต่างไหม หรือพอสังเกตได้หรือไม่ว่าทำไมถึงต้องกำหนดเช่นนี้มีวิธีอื่นอีกหรือไม่ ข้อสังเกตที่ x < x2 และ 1 < x2 เมื่อ x>1 แต่ 2x<x2 และ 1 < x2 เนื่องจากที่ x>1 ถ้าเรากำหนด 2x<x2 และ 1 < x2 เงื่อนไขจะไม่เป็นจริงเนื่องจาก ถ้า x เป็นจำนวนจริงที่เท่ากับ 1.1 ทำให้ 2x<x2 เป้นเท็จ

ข้อสังเกตจากตัวอย่าง f(x) = x2+2x+1 จะเห็นว่าค่าคงที่ C และ k ในการนิยามบิ๊กโอจะถูกเรียกว่า “พยานหรือสิ่งยืนยัน (Witness)” ถึงความสัมพันธ์ว่า f(x) คือ O(g(x)) จากตัวอย่างจะเห็นว่าเราหาพยาน C และ k เพียงคู่เดียวก็เพียงพอที่จะใช้ยืนยันความสัมพันธ์ |f(x)|C|g(x)|ที่ x>k นอกจากนี้จะเห็นว่าพยานมีอยู่อย่างไม่จำกัดดังนั้นเมื่อมี C และ k โดยที่ C< C และ k< k แล้ว |f(x)|C|g(x)| C |g(x)| ที่ x> k >k

A Big-O relationship does not hold  

   

   

ข้อสังเกตุ บิ๊กโอ โดยทั่วไปโพลิโนเมียลสามารถใช้เพื่อประมาณการเติบโตของฟังก์ชัน ดังทฤษฎีบทต่อไปนี้ ทฤษฎีบท ให้ f(x) = anxn + an-1xn-1 + ... + a1x1 + a0 โดยที่ an,an-1,..., a1, a0 เป็นจำนวนจริง ดังนั้น f(x) มี O(xn) บทพิสูจน์ โดยใช้ทฤษฎีของอสมการของสามเหลียม และเมื่อ x > 1 แล้ว นี่แสดงว่า โดยที่

การเติบโตของบิ๊กโอของฟังก์ชันต่างๆ บิ๊กโอที่ใช้ประมาณจำนวนการดำเนินการที่เกิดขึ้นในอัลกอริทึมที่ใช้แก้ปัญหาต่างๆ ส่วนใหญ่จะมีอัตราเติบโตตามจำนวนของอินพุต n นั่นคือ 1, log n, n, n log n, n2, 2n, n! จากกราฟจะเห็นว่าอัตราการเติบโตของแต่ละฟังก์ชันจะน้อยกว่าฟังก์ชันที่ตามมา

การเติบโตของการรวมฟังก์ชัน อัลกอริทึมส่วนใหญ่เกิดจากอัลกอริทึมย่อยที่เรียงต่อกัน จำนวนขั้นตอนที่ใช้แก้ปัญหาจากอัลกอริทึมย่อยสามารถรวมเข้าด้วยกับเพื่อพิจารณาอัตราการเติบโตเมื่อเทียบกับการเพิ่มขึ้นของอินพุต ดังนั้นสมมุติปัญหาหนึ่งมีสองอัลกอริทึมย่อยโดยมีสองฟังก์ชันคือ f1(x) มี O(g1(x)) และ f2(x) มี O(g2(x)) จากนิยามของบิ๊กโอจะมีค่าคงที่ C1, C2, k1, k2 ที่ทำให้ |f1(x)|  C1|g1(x)| โดยที่ x > k1 และ |f2(x)|  C2|g2(x)| โดยที่ x > k2 เพื่อประมาณผลรวมของทั้งสองฟังก์ชันจากอสมการสามเหลี่ยมจะได้ว่า

การรวมฟังก์ชันการเติบโต ทฤษฎีบท เมื่อปัญหาหนึ่งใช้สองอัลกอริทึมย่อยโดยมีสองฟังก์ชันคือ f1(x) มี O(g1(x)) และ f2(x) มี O(g2(x)) ดังนั้น (f1+f2)(x) มีบิ๊กโอเป็น O(max(|g1(x)|, |g2(x)|)) จากความสัมพันธ์ข้างต้นที่ เมื่อ C = C1 + C2 และ g(x) =max(|g1(x)|, |g2(x)|) จากอสมการนี้แสดงว่า (f1+f2)(x)  C|g(x)| เมื่อ x > k โดยที่ k = max(k1, k2)

การคูณฟังก์ชันการเติบโต การประมาณบิ๊กโอที่อยู่ในรูปของผลคูณสามารถคำนวณได้จากการคูณของฟังก์ชัน f1 และ f2 โดยที่ x > max(k1, k2) จากความจริงที่ว่า โดยที่ C = C1C2 และจากอสมการจะเห็นว่า f1(x)f2(x) มีบิ๊กโอเป็น O(g(x))

ตัวอย่างการประมาณค่าบิ๊กโอ ตัวอย่าง จงประมาณค่าบิ๊กโอของ f(n) = 3nlog(n!) + (n2+3)log n โดยที่ n เป็นจำนวนเต็มบวก วิธีทำ ในขั้นแรกจะประเมิน 3nlog(n!) ก่อน นั่นคือ ซึ่งจะได้ว่า ส่วนเทอม 3n จะมีบิ๊กโอเป็น O(n) ดังนั้น 3nlog(n!) จะมีบิ๊กโอเป็น O(n2log n) ในขั้นที่สองหา (n2+3)log n โดย (n2+3) มีบิ๊กโอเป็น O(n2) เมื่อ n>2 ซึ่งในเทอม (n2+3)log n จะมีบิ๊กโอเป็น O(n2log n) เพราะฉะนั้น f(n) ที่เป็นผลรวมของทั้งสองขั้นตอนจะมีบิ๊กโอเป็น O(n2log n)