พหุนามนายกรัฐมนตรี


21

กำหนดพหุนามพิจารณาว่าเป็นนายกหรือไม่

พหุนามเป็นax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + gที่แต่ละคำเป็นจำนวนคงที่ (ค่าสัมประสิทธิ์) xคูณด้วยอำนาจติดลบของ พลังงานสูงสุดที่มีค่าสัมประสิทธิ์ไม่เป็นศูนย์เรียกว่าดีกรี สำหรับความท้าทายนี้เราจะพิจารณาหลายชื่ออย่างน้อยปริญญา 1. xนั่นคือแต่ละพหุนามมีบางส่วน นอกจากนี้เรายังใช้พหุนามกับค่าสัมประสิทธิ์จำนวนเต็มเท่านั้น

พหุนามสามารถคูณได้ ยกตัวอย่างเช่นเท่ากับ(x+3)(2x^2-2x+3) 2x^3+4x^2-3x+9ดังนั้น2x^3+4x^2-3x+9สามารถแยกตัวประกอบในx+3และ2x^2-2x+3ดังนั้นจึงเป็นคอมโพสิต

ไม่สามารถแยกตัวประกอบพหุนามอื่น ๆ ได้ ตัวอย่างเช่น2x^2-2x+3ไม่ใช่ผลิตภัณฑ์ของพหุนามสองอันใด ๆ (ไม่สนใจพหุนามคงที่หรือที่มีค่าสัมประสิทธิ์ไม่ใช่จำนวนเต็ม) ดังนั้นจึงเป็นเรื่องสำคัญ (หรือเรียกอีกอย่างว่าลดลง)

กฎระเบียบ

  • อินพุตและเอาต์พุตสามารถผ่านวิธีมาตรฐานใด ๆ
  • อินพุตอาจเป็นสตริงเช่น2x^2-2x+3รายการของ coeffecients like {2,-2,3}หรือวิธีการอื่นที่คล้ายคลึงกัน
  • เอาท์พุทเป็นทั้งค่าจริงถ้ามันเป็นนายกหรือค่าเท็จถ้ามันประกอบ คุณต้องให้ค่าความจริงที่เหมือนกันสำหรับทุกช่วงเวลาและค่าความเท็จเดียวกันสำหรับพหุนามคอมโพสิตทั้งหมด
  • อินพุตจะต้องมีอย่างน้อยระดับ 1 และไม่เกิน 10 องศา
  • คุณไม่สามารถใช้เครื่องมือในตัวสำหรับการแยกตัวประกอบ (ของจำนวนเต็มหรือนิพจน์) หรือการแก้สมการ

ตัวอย่าง

จริง - สำคัญ

x+3
-2x
x^2+x+1
x^3-3x-1
-2x^6-3x^4+2
3x^9-8x^8-3x^7+2x^3-10

เท็จ - คอมโพสิต

x^2
x^2+2x+1
x^4+2x^3+3x^2+2x+1
-3x^7+5x^6-2x
x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12

11
จาก googling ที่รวดเร็วนี่เป็นปัญหาที่ยากโดยไม่คำนึงถึงการเล่นกอล์ฟ
orlp

5
ฉันถูกต้องในการคิดว่าโดยนายกคุณหมายถึงลดลงไม่ได้ ? ถ้าเป็นเช่นนั้นนี่คือตัวแปรในคำถามนี้เกี่ยวกับการแยกชื่อพหุนามและฉันสงสัยว่ามันจะไม่ดึงดูดคำตอบใด ๆ
Peter Taylor

1
ตามรายงานล่าสุดนี้ " เรามีความสนใจในคำถามของการตัดสินใจว่าพหุนามที่ให้นั้นไม่สามารถลดลงได้หรือไม่ดังนั้นการทดสอบหรือเกณฑ์ง่าย ๆ ที่จะให้ข้อมูลนี้เป็นที่ต้องการโชคไม่ดีที่ไม่มีเกณฑ์ดังกล่าวที่จะใช้กับทุก คลาสของชื่อพหุนามยังไม่ได้ถูกกำหนด "
Peter Taylor

2
@AlexA. มีหลายหลาย "ถ้า" การทดสอบที่ทำงานสำหรับบางคนมีหลายชื่อ แต่คำถามจะขอเป็น "ถ้าหาก" การทดสอบที่ทำงานสำหรับหลายชื่อทั้งหมด
Peter Taylor

1
นี่เป็นปัญหาที่ดีมาก! โปรดทราบว่าโดยปกติแล้วชื่อแบบพหุนามมีความสัมพันธ์เฉพาะกับวงแหวนฐาน (หรือฟิลด์) โดยเฉพาะอย่างยิ่งถ้าเขตข้อมูลเป็นจำนวนเชิงซ้อนดังนั้นไม่มีพหุนามของระดับที่มากกว่า 2 เป็นนายก ดังนั้นฉันจะระบุว่าคุณต้องการ Rational (อาจจะตรงไปตรงมาที่สุด) Integer (นี่จะเกี่ยวข้องกับการแยกตัวประกอบจำนวนเต็มเช่นกัน) หรือโมดูโลบางจำนวน m หาก m เป็นตัวหลักแสดงว่ามีอัลกอริธึมค่อนข้างง่าย มิฉะนั้นสิ่งที่เป็นบิตยุ่งยากมากขึ้น ... ( แต่เป็นไปได้)
cody

คำตอบ:


3

Mathematica, 224 ไบต์

f@p_:=(e=p~Exponent~x;r=Range[⌈e/-4⌉,(e+2)/4];e<2||FreeQ[PolynomialRemainder[p,Thread@{r,#}~InterpolatingPolynomial~x,x]&/@Tuples[#~Join~-#&[Join@@Position[#/Range@Abs@#,_Integer]]&/@#]~DeleteCases~{(a_)..},0|{}]&[p/.x->r])

คำอธิบาย :

วิธีการของ Kroneckerใช้ที่นี่ วิธีนี้สร้างพหุนามระดับต่ำกว่าและทดสอบว่ามีพหุนามเดิมหรือไม่

กรณีทดสอบ :

f/@{x+3, -2x, x^2+x+1, x^3-3x-1, -2x^6-3x^4+2, 3x^9-8x^8-3x^7+2x^3-10}
(* {True, True, True, True, True, True} *)

f/@{x^2, x^2+2x+1, x^4+2x^3+3x^2+2x+1, -3x^7+5x^6-2x, x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12}
(* {True, True, True, True, True} *)

ใช้เวลา 14 วินาทีบนแล็ปท็อปของฉันเพื่อสรุปว่า3x^9-8x^8-3x^7+2x^3-10มันยอดเยี่ยม


1

PARI / GP 16 ไบต์ราคาถูกสุด ๆ

ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ได้รับอนุญาต (โดยสังเกตว่าคำสั่งไม่ได้คำนึงถึงปัจจัยหรือการแก้สมการ):

polisirreducible

กรณีทดสอบ

%(x^2+x+1)

ผลตอบแทน1(จริง) ตัวอย่างอื่น ๆ ทำงานในทำนองเดียวกัน

แต่เพื่อแสดงให้เห็นว่านี่เป็นวิธีที่แก้ได้ยากนี่เป็นวิธีแก้ปัญหาที่สมบูรณ์

ราคาถูกน้อยลง แต่ sloooooooooow

มันไม่มีประเด็นที่จะตีกอล์ฟ

Beauzamy(P)=
{
  my(d=poldegree(P),s,c);
  s=sum(i=0,d,polcoeff(P,i)^2/binomial(d,i));
  c = 3^(3/2 + d);
  c *= s / (4*d*Pi);
  abs(c * pollead(P))
}
factorpol(P)=
{
  my(B=Beauzamy(P)\1, t=B*2+1, d=poldegree(P)\2, Q);
  for(i=0,t^(d+1)-1,
    Q=Pol(apply(n->n-B, digits(i,t)));
    if(Q && poldegree(Q) && P%Q==0, return(Q))
  );
  0
}
irr(P)=
{
  factorpol(P)==0
}

แก้ไข: ผู้แสดงความคิดเห็นได้ชี้ให้เห็นว่าวิธีแรกอาจไม่ได้รับอนุญาตด้วยรสนิยมที่ดี, วิญญาณของกฎ, สนธิสัญญาเจนีวา, กฎช่องโหว่มาตรฐาน, ฯลฯ ฉันไม่เห็นด้วย แต่ในกรณีใด ๆ ที่ฉันโพสต์รุ่นที่สองพร้อมกับ ครั้งแรกและแน่นอนว่ามันเป็นที่ยอมรับ


1
อืม ... ฉันค่อนข้างแน่ใจว่าคำสั่งนี้จะคำนึงถึงปัจจัยและ / หรือแก้สมการภายใต้ประทุน (นอกจากนี้หากความท้าทายไม่อนุญาตให้มีตัวบิวด์อินบางตัวก็บอกเป็นนัยว่าบิวท์อินที่เพิ่งแก้ปัญหาไม่ได้อยู่ในจิตวิญญาณของความท้าทายด้วย)
Martin Ender

@ MartinBüttner: ฉันคิดว่าคำตอบแรกเหมาะกับตัวอักษร แต่ไม่ใช่วิญญาณของกฎความท้าทาย นั่นเป็นเหตุผลที่ฉันเขียนรุ่นที่สองซึ่งเป็นวิธีที่ถูกต้องตามกฎหมาย มันสามารถตรวจสอบได้ว่าx^4+1(ซึ่งเป็น mod ที่ลดได้อย่างมีชื่อเสียงนายก ๆ ) ลดลงใน 86 มิลลิวินาที หากไม่มีอะไรอื่นที่คนอื่นสามารถปรับตัวและเล่นกอล์ฟในเวอร์ชั่นนี้ได้
ชาร์ลส์

1
คำตอบแรกที่ตกอยู่ในช่องโหว่ซึ่งเป็นสิ่งต้องห้ามโดยเริ่มต้น: การใช้ฟังก์ชั่นที่จะทำงาน โปรดลบออกจากคำตอบของคุณหรืออย่างน้อยก็ระบุว่าไม่ใช่ทางออกที่ถูกต้อง
isaacg

5
@isaacg นั่นไม่ใช่ช่องโหว่มาตรฐานที่ถูกต้องในขณะนี้ (เนื่องจากรายละเอียดการโหวต + 44 / -29) ชาร์ลส์ถ้าคุณเห็นว่ามีเพียงคำตอบที่ถูกต้องตามกฎหมายที่สองคือจริงๆแล้วคุณควรจะรวมถึงของมันนับไบต์แทน
Martin Ender

@ MartinBüttner: ฉันไม่ - ฉันคิดว่าทั้งสองถูกต้องตามกฎของคำถามนี้และหัวข้อช่องโหว่ทั่วไป แต่ฉันเพิ่มความคิดเห็นเพื่อชี้ให้เห็นปัญหา
ชาร์ลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.