สามเหลี่ยมปาสคาล – สูตร รูปแบบ และตัวอย่าง
สามเหลี่ยมปาสคาลคืออะไร?
สามเหลี่ยมปาสกาล (Pascal's Triangle) คือกลุ่มตัวเลขสามเหลี่ยมที่มีรูปแบบและการเชื่อมโยงเฉพาะกับแถวก่อนหน้า สามเหลี่ยมนี้ประดิษฐ์ขึ้นโดยเบลส ปาสกาล โดยสามเหลี่ยมนี้เริ่มต้นด้วยองค์ประกอบหนึ่งตัวในแถวแรก หลังจากนั้น แถวแต่ละแถวจะเริ่มต้นและลงท้ายด้วยเลข “1”
ประวัติสามเหลี่ยมปาสคาล
หนังสือจีนเรื่อง “The Nine Chapters on the Mathematical Art” มีตัวอย่างแรกๆ ของสามเหลี่ยมปาสคาล นอกจากนี้ ยังมีรูปแบบและคุณสมบัติบางอย่างแบบเดียวกับที่พบในรูปสามเหลี่ยมในปัจจุบัน
ปาสกาลเป็นหนึ่งในคนหลายคนในยุโรปที่ศึกษาเรื่องสามเหลี่ยม นักคณิตศาสตร์คนอื่นๆ ก็ได้ศึกษาเรื่องอาร์เรย์ของตัวเลขสามเหลี่ยมที่คล้ายคลึงกันมาก่อนเขา
การก่อสร้างสามเหลี่ยมปาสคาล
การสร้างสามเหลี่ยมปาสกาลนั้นง่ายมาก สิ่งเดียวที่คุณต้องจำไว้คือ แถวเริ่มต้นและสิ้นสุดด้วย 1 กฎสำหรับตัวเลขที่เหลือมีดังนี้:
สำหรับแถว r และคอลัมน์ c ใดๆ จำนวนจะเป็นผลรวมของคอลัมน์ c-1 และ c จากแถว r-1
ที่นี่
- ร = 3,4,5….
- n และ c = 2,3,4,…r-1
ต่อไปนี้เป็นขั้นตอนในการสร้าง Pascal's Triangle:
ขั้นตอน 1) เริ่มต้นด้วยการเติมสองแถว
ขั้นตอน 2) องค์ประกอบที่สองสำหรับบรรทัดที่สามคือผลรวมของตัวเลขแรกและตัวเลขที่สองในแถวที่สอง
ขั้นตอน 3) แถวที่สี่จะเริ่มต้นด้วย "1" ตัวเลขตัวที่สองคือ 3 ซึ่งเป็นผลรวมของ 1 และ 2 (เน้นด้วยสีน้ำเงิน)
รูปภาพด้านล่างแสดงวิธีการเติมแถวที่สี่:
ขั้นตอน 4) แถวที่ 5 จะประกอบด้วยตัวเลข 5 ตัว เรารู้รูปแบบการเติมข้อมูลในแถวจากขั้นตอนก่อนหน้านี้แล้ว
สูตรสามเหลี่ยมปาสคาล – สัมประสิทธิ์ทวินาม
ค่าสัมประสิทธิ์ทวินามคือตัวเลขที่แสดงวิธีการต่างๆ ในการเลือกเซตย่อยขององค์ประกอบ k จากชุดขององค์ประกอบ n ตัว บ่อยครั้งจะเขียนว่า “C(n,k)” หรือ “n choose k”
ค่าสัมประสิทธิ์ทวินามถูกกำหนดให้เป็น
“!” หมายถึง "แฟกทอเรียล"
มะ! = n.(n-1) (n-2)…3.2.1
ตัวอย่างเช่น
5! = 5.4.3.2.1
= 120
สมมุติว่า C(5,3) หรือ 5 เลือก 3 = 5! / 3!(5-3)!
= 120/(12)
= 10
วิธีที่ 1: สร้างสามเหลี่ยมปาสคาลจากแถวก่อนหน้า
ขั้นตอนในกระบวนงานนี้เหมือนกับขั้นตอนในสามเหลี่ยมปาสคาล สมมติว่าเราต้องการสร้างสามเหลี่ยมปาสคาลสูงสุดเจ็ดแถว
ขั้นตอนในการทำให้สำเร็จมีดังนี้:
ขั้นตอน 1) เริ่มต้นแถวบนสุดด้วย "1"
ขั้นตอน 2) สำหรับแถว “r” รายการ “c” จะเป็นผลคูณของ “c-1” และ “c” ซึ่งเป็นหมายเลขของแถว “r-1”
ขั้นตอน 3) ตัวเลขแรกและตัวเลขสุดท้ายในแถวจะต้องเป็น “1” เสมอ
เราต้องปฏิบัติตามสามขั้นตอนง่ายๆ นี้เพื่อสร้างสามเหลี่ยมปาสคาล
C++ โค้ดสามเหลี่ยมปาสกาลจากแถวก่อนหน้า
#include <bits/stdc++.h>
using namespace std;
void printRow(int n)
{
int numbers[n][n];
for (int row = 0; row < n; row++)
{
for (int col = 0; col <= row; col++)
{
if (col == 0 || col == row)
{
numbers[row][col] = 1;
}
else
{
numbers[row][col] = numbers[row - 1][col - 1] + numbers[row - 1][col];
}
cout << numbers[row][col] << "\t";
}
cout << endl;
}
}
int main()
{
int n;
cout << "How many rows: ";
cin >> n;
printRow(n);
}
Output:
How many rows: 7 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1
Python โค้ดสูตรสามเหลี่ยมปาสกาลจากแถวก่อนหน้า
def printRow(n):
numbers = [[0 for row in range(n)]
for col in range(n)
]
for row in range(len(numbers)):
for col in range(0, row+1):
if row == col or col == 0:
numbers[row][col] = 1
else:
numbers[row][col] = numbers[row-1][col-1]+numbers[row-1][col]
print(numbers[row][col],end="\t")
print("\n")
n = int(input("How many rows: "))
printRow(n)
ผลลัพธ์ตัวอย่างสามเหลี่ยมของปาสคาล:
How many rows: 7 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1
การวิเคราะห์ความซับซ้อน
A อาร์เรย์สองมิติ ถูกนำมาใช้ในการดำเนินการ โดยที่ N คือจำนวนแถวในสามเหลี่ยมปาสคาล สิ่งนี้จะต้องใช้ N2 พื้นที่หน่วย ดังนั้น O จะเป็นความซับซ้อนของพื้นที่ (N2).
เรามีสองลูปในฟังก์ชัน และแต่ละลูปทำงานเป็นเวลา "N" ครั้ง ดังนั้นความซับซ้อนของเวลาจึงเหมือนกัน บน2) หรือความซับซ้อนของเวลาแบบกำลังสอง
วิธีที่ 2: การสร้างสามเหลี่ยมปาสกาลโดยการคำนวณสัมประสิทธิ์ทวินาม
เราสามารถหาค่าของสามเหลี่ยมปาสกาลได้ง่ายๆ โดยใช้ค่าสัมประสิทธิ์ทวินาม นี่คือแผนภาพ:
ต่อไปนี้เป็นขั้นตอนในการสร้างสามเหลี่ยมปาสกาลโดยการคำนวณทวินาม:
ขั้นตอน 1) แถวบนสุดจะเป็น C(0,0) ใช้สูตรด้านบนสำหรับค่าสัมประสิทธิ์ทวินาม C(0,0) = 1 เพราะ 0! = 1.
ขั้นตอน 2) สำหรับแถว “i” จะมีองค์ประกอบ “i” ทั้งหมด แต่ละรายการจะถูกคำนวณ C(n,r) โดยที่ n จะเป็น i-1
ขั้นตอน 3) ทำซ้ำขั้นตอนที่ 2 ตามจำนวนแถวที่คุณต้องการสร้างสามเหลี่ยมปาสคาล
C++ สามเหลี่ยมของรหัสปาสคาลโดยสัมประสิทธิ์ทวินาม
#include <iostream>
using namespace std;
int factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
int binomialCoefficient(int n, int r)
{
int result = 1;
if (r > n)
{
return -1;
}
result = factorial(n) / (factorial(r) * factorial(n - r));
return result;
}
void printPascalTriangle(int row)
{
for (int i = 0; i <= row; i++)
{
for (int j = 0; j <= i; j++)
{
cout << binomialCoefficient(i, j) << "\t";
}
cout << endl;
}
}
int main()
{
int n;
cout << "Enter row number: ";
cin >> n;
printPascalTriangle(n);
}
Output:
Enter row number: 9 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1
Python สามเหลี่ยมของรหัสปาสคาลโดยสัมประสิทธิ์ทวินาม
def factorial(n):
result = 1
for i in range(1,n+1):
result*=i
return result
def binomialCoefficient(n,r):
result =1
if r>n:
return None
result = factorial(n) / (factorial(r) * factorial(n - r))
return int(result)
def printPascalTriangle(row):
for i in range(row+1):
for j in range(i+1):
print(binomialCoefficient(i, j), end="\t")
print()
# print(binomialCoefficient(3, 2))
n = int(input("Enter row number: "))
printPascalTriangle(n)
ผลลัพธ์ตัวอย่างสามเหลี่ยมของปาสคาล:
Enter row number: 8 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1
การวิเคราะห์ความซับซ้อน
มีการใช้ลูปสามอันในการใช้งาน ลูปหนึ่งใช้สำหรับคำนวณค่าสัมประสิทธิ์ทวินาม และอีกสองลูปใช้สำหรับสร้างตัวเลขสำหรับทุกแถว สำหรับจำนวนแถว เรามีลูปสามอันที่ดำเนินการ "n" ครั้ง ดังนั้นความซับซ้อนของเวลาโดยรวมจะเท่ากับ 0(n)3).
ความซับซ้อนของพื้นที่ในตอนนี้คงที่เนื่องจากเราไม่ได้เก็บข้อมูลใดๆ ไว้ในหน่วยเก็บข้อมูล โปรแกรมจะคำนวณองค์ประกอบ และพิมพ์ออกมาเป็นแถว จากนั้นความซับซ้อนของพื้นที่จะลดลงเหลือ 0(1)
วิธีที่ 3: การสร้างสามเหลี่ยมปาสกาลโดยดัดแปลงค่าสัมประสิทธิ์ทวินาม
ในเทคนิคก่อนหน้านี้ เราได้เห็นวิธีใช้สัมประสิทธิ์ทวินามในการคำนวณแต่ละองค์ประกอบของสามเหลี่ยมปาสคาลแล้ว วิธีนี้จะกำหนด C(n,r) จาก C (n, r-1) มันจะทำให้สิ่งต่าง ๆ ง่ายขึ้นด้วยคำสั่งเดียว
ต่อไปนี้เป็นขั้นตอนในการสร้างสามเหลี่ยมปาสคาลด้วยค่าสัมประสิทธิ์ทวินามดัดแปลง:
ขั้นตอน 1) เริ่มต้นแถวแรกด้วย "1"
ขั้นตอน 2) คำนวณ C(n,r) โดยที่ “n” คือหมายเลขแถว และ “r” คือคอลัมน์หรือองค์ประกอบ กำหนดค่าในตัวแปร C
ขั้นตอน 3) ในการคำนวณ C(n,k) มันจะเป็น C*(nk)/k ตอนนี้กำหนดค่านี้ให้กับ C
ขั้นตอน 4) ทำขั้นตอนที่ 3 ต่อไปจนกระทั่ง “k” ไปถึงจุดสิ้นสุดของแถว หลังจากการวนซ้ำแต่ละครั้ง ให้เพิ่มค่า K ทีละหนึ่ง
C++ รหัสสำหรับสามเหลี่ยมปาสคาลโดยค่าสัมประสิทธิ์ทวินามที่แก้ไขแล้ว
#include <bits/stdc++.h>
using namespace std;
void printpascalTriangle(int n)
{
for (int row = 1; row <= n; row++)
{
int previous_coef = 1;
for (int col = 1; col <= row; col++)
{
cout << previous_coef << "\t";
previous_coef = previous_coef * (row - col) / col;
}
cout << endl;
}
}
int main()
{
int n;
cout << "How many rows: ";
cin >> n;
printpascalTriangle(n);
}
Output:
How many rows: 5 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
Python รหัสสำหรับสามเหลี่ยมปาสคาลโดยค่าสัมประสิทธิ์ทวินามที่แก้ไขแล้ว
def printpascalTriangle(n):
for row in range(1, n+1):
previous_coef = 1
for col in range(1, row+1):
print(previous_coef, end="\t")
previous_coef = int(previous_coef*(row-col)/col)
print()
n = int(input("How many rows: "))
printpascalTriangle(n)
ผลลัพธ์ของรูปแบบสามเหลี่ยมของ Pascal:
How many rows: 5 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
การวิเคราะห์ความซับซ้อน
การใช้งานมีสองลูป แต่ละลูปทำงานสูงสุด "n" ครั้ง โดย "n" หมายถึงจำนวนแถวในสามเหลี่ยมปาสกาล ดังนั้นความซับซ้อนของเวลาคือ บน2), เวลากำลังสอง
เมื่อพิจารณาถึงความซับซ้อนของพื้นที่ เราไม่จำเป็นต้องใช้อาร์เรย์ใดๆ ในการจัดเก็บ เราเพียงแค่ใช้ตัวแปรหนึ่งตัวเพื่อรักษาค่าสัมประสิทธิ์ทวินามก่อนหน้า ดังนั้น เราจึงต้องการพื้นที่เพิ่มเติมเพียงหนึ่งพื้นที่ ความซับซ้อนของพื้นที่จึงกลายเป็น O (1).
การประยุกต์สามเหลี่ยมปาสคาล
ต่อไปนี้คือตัวอย่างการใช้งานของ Pascal's Triangle:
การขยายทวินาม: เราสามารถหาค่าสัมประสิทธิ์ของการขยายทวินามจากสามเหลี่ยมปาสคาลได้ นี่คือตัวอย่าง:
| (x + ย)0 | 1 |
| (x + ย)1 | 1.x + 1.y |
| (x + ย)2 | 1x2 + 2xy+ 1y2 |
| (x + ย)3 | 1x3 + 3x2และ + 3xy2 + 1y3 |
| (x + ย)4 | 1x4 + 4x3และ + 6x2y2 + 4xy3 + 1y4 |
การคำนวณชุดค่าผสม: เราเคยเห็นองค์ประกอบของสามเหลี่ยมปาสคาลเทียบเท่ากับสัมประสิทธิ์ทวินาม ตัวอย่างเช่น ถ้าคุณมี 6 ลูกและถูกขอให้เลือก 3 ลูก ก็จะเป็นเช่นนั้น 6C3. หรือคุณสามารถหาตัวเลขในองค์ประกอบที่ 3 ของแถวที่ 6 จากสามเหลี่ยมปาสคาล
ข้อเท็จจริงที่น่าสนใจเกี่ยวกับสามเหลี่ยมปาสคาล
ต่อไปนี้เป็นข้อเท็จจริงบางส่วนที่คุณจะพบว่าน่าสนใจเกี่ยวกับสามเหลี่ยมปาสคาล:
- ผลรวมของสมาชิกทุกตัวในแถวจะมีกำลังเป็น 2 เสมอ
- ผลรวมขององค์ประกอบของแถวในแนวทแยงทำให้เกิดลำดับฟีโบนัชชี
สรุป
- สามเหลี่ยมของปาสกาลให้ค่าสัมประสิทธิ์สำหรับการขยายทวินาม
- แต่ละแถวของสามเหลี่ยมปาสกาลเริ่มต้นและสิ้นสุดด้วย “1” ค่ากลางคือผลรวมของสององค์ประกอบของแถวก่อนหน้า
- การบวกองค์ประกอบทั้งหมดในสามเหลี่ยมปาสกาลในแนวทแยงจะทำให้คุณได้ ลำดับ Fibonacci.
- สามเหลี่ยมของปาสกาลสามารถสร้างได้ด้วยสัมประสิทธิ์ทวินาม









