Before explaining polynomial time, I'll briefly explain Big O notation. Just note that for brevity it is a simplified explanation.
Any algorithm takes some number of steps to compute a result.
We also have a notion of "input size", often denoted as *n*.
We say that an algorithm is *O(f(n))* for a function f, if it can be shown that the algorithm takes at most *c\*f(n)* steps
to compute a result with input size *n*. Where *c* is some constant.

To give a concrete example. Imagine we have a list of n integers, and we want to find which pair of integers gives the largest sum.
Let's suppose our algorithm is to check every possible pair, and update the best pair we found as soon as we find a better one.
The "Big O" of this algorithm would be *O(n^2)*, because we would have to check *n\*(n-1)/2* pairs, and do a finite number of steps
for each pair to consider. Say the number of steps is for instance 7. Then the number of steps the algorithm does for an input of
size n is *3.5n^2 - 3.5n*, we only really look at the dominant term: *3.5n^2*, the value of *c* here is 3.5, f(n) is n^2, thus this algorithm is O(n^2).

Okay, with that out of the way. We say that an algorithm is polynomial time, if it's "Big O" function is a polynomial.
ก่อนที่จะอธิบายเวลาพหุนาม ฉันจะอธิบายสัญกรณ์ Big O สั้นๆ ก่อน โปรดทราบว่าเพื่อความกระชับมันเป็นคำอธิบายที่ง่าย อัลกอริธึมใดๆ ก็ตามต้องใช้ขั้นตอนจำนวนหนึ่งเพื่อคำนวณผลลัพธ์ นอกจากนี้เรายังมีแนวคิดเรื่อง "ขนาดอินพุต" ซึ่งมักแสดงเป็น *n* เราบอกว่าอัลกอริทึมคือ *O(f(n))* สำหรับฟังก์ชัน f หากสามารถแสดงได้ว่าอัลกอริทึมใช้ขั้นตอนสูงสุด *c\*f(n)* เพื่อคำนวณผลลัพธ์ด้วยขนาดอินพุต *n *. โดยที่ *c* เป็นค่าคงที่ เพื่อให้เป็นตัวอย่างที่เป็นรูปธรรม ลองนึกภาพเรามีรายการจำนวนเต็ม n และเราต้องการค้นหาว่าจำนวนเต็มคู่ใดที่ให้ผลรวมมากที่สุด สมมติว่าอัลกอริทึมของเราคือการตรวจสอบทุกคู่ที่เป็นไปได้ และอัปเดตคู่ที่ดีที่สุดที่เราพบทันทีที่เราพบคู่ที่ดีกว่า "Big O" ของอัลกอริทึมนี้จะเป็น *O(n^2)* เพราะเราจะต้องตรวจสอบคู่ *n\*(n-1)/2* และทำตามขั้นตอนจำนวนจำกัดสำหรับแต่ละคู่เพื่อ พิจารณา. สมมติว่าจำนวนขั้นตอนคือเช่น 7 จากนั้นจำนวนขั้นตอนที่อัลกอริทึมทำสำหรับอินพุตขนาด n คือ *3.5n^2 - 3.5n* เราจะดูเฉพาะคำที่เด่นเท่านั้น: *3.5n^2* ค่าของ *c* ที่นี่คือ 3.5, f(n) คือ n^2 ดังนั้นอัลกอริทึมนี้คือ O(n^2) เอาล่ะออกไปให้พ้นทาง เราบอกว่าอัลกอริทึมคือเวลาพหุนาม ถ้าเป็นฟังก์ชัน "Big O" ก็จะเป็นพหุนาม
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence