如何判斷乙個n次多項式是否對稱?

2021-07-24 02:32:36 字數 2685 閱讀 1227

題目大意:給出乙個

n 次多項式an

xn+a

n−1x

n−1+

...+

a0(a

n≠0)

,判斷這個多項式的函式影象是否軸對稱/中心對稱 n≤

105

定理:n

次多項式(n

≥2)如果軸對稱/中心對稱,其對稱軸/對稱中心的橫座標必為−a

n−1n

∗an

證明:設對稱軸/對稱中心橫座標為

r ,則f(

2r−x

)的n−

1 次項係數為n∗

2r∗(

−1)n

−1+a

n−1∗

(−1)

n−1

若n 為偶數則: f(

x)=f

(2r−

x)=>an

∗n∗2

r∗(−

1)+a

n−1∗

(−1)

=an−

1 若

n 為奇數則: f(

x)+f

(2r−

x)=2

f(r)

=>an

∗n∗2

r+an

−1+a

n−1=

0 解得 r=

−an−

1n∗a

n 已知常數

r ,現在我們要判斷: f(

x)是否等於f(

2r−x

) (

n 為偶數) f(

x)是否等於2f

(r)−

f(2r

−x) (

n 為奇數)

以下做法以

n為偶數為例,

n 為奇數做法類似,不贅述了

做法0:fft多點求值

取兩兩不同的⌊(

n+1)

/2⌋個點

x1,x

2,..

.,xk

(xi,分別判斷是否滿足f(

x)=f

(2r−

x),若均滿足則f(

n)對稱,否則不對稱。

證明:

必要性顯然

充分性: 設g

(x)=

f(2r

−x) ,則f(

xi)=

f(2r

−xi)

=g(x

i)即 f(

x1)=

g(x1

),f(

x2)=

g(x2

),..

.,f(

xk)=

g(xk

) f(

2r−x

1)=g

(2r−

x1),

f(2r

−x2)

=g(2

r−x2

),..

.,f(

2r−x

k)=g

(2r−

xk)

f(r)

=g(r

) 由n

+1個點確定乙個

n 次多項式可知, f(

x)=g

(x)即

f(x)

=f(2

r−x)

證畢。

利用fft多點求值求出這2k

個點的點值,分別判斷,時間複雜度o(

nlog

2n)

做法1:fft直接展開f(

2r−x

) 二項式定理展開,f(

2r−x

) 的

m 次項係數為: ∑n

i=mc

mi(2

r)i−

m(−1

)m=(

−1)m

m!∑n

i=m(

i!)∗

((2r

)i−m

(i−m

)!)

容易發現這是乙個卷積的形式,於是用fft直接求出,時間複雜度o(

nlog

n)

由於上面兩個做法對小朋友很不友好,所以下面我們來介紹一種理論正確率100%的不確定性演算法。。。(什麼鬼)

做法2:schwartz–zippel引理

我們選取乙個隨機的

x ,判斷f(

x)是否等於f(

2r−x

) ,若等於則對稱,否則不對稱

顯然如果不等於那麼鐵定不對稱,但是如果等於,錯誤率是多少?

schwartz–zippel引理:設f(

x1,x

2,..

.,xn

) 為數域

f 上的n元

d 次非零多項式,則隨機取一組x1

,x2,

...,

xn,則f

(x1,

x2,.

..,x

n)=0

的概率≤d

|f|

對於實數域上的多項式

f 來說,|f

|=∞,

d|f|

=0所以正確率是100%【捂臉】

如果覺得不靠譜就多隨機幾個值好了

時間複雜度o(

n)

所以這題出不出來,大家看個樂呵吧【捂臉】

判斷乙個樹是否對稱

使用遞迴的方法判斷樹是否對稱,也讓我更進一步的理解了遞迴。class solution object def ismirror self,left,right if left none and right none 如果左右子樹都為空,則對稱 return true elif left none o...

java實現解一元n次多項式 二

package commonalgorithm public class polynomialsoluter 檢查輸入項長度 private boolean init double matrixa,double arrayb public double getresult double matrix...

資料結構 一元n次多項式模板

一元n次多項式 我把first開到公有了。實驗二 一元多項式的基本運算 實驗目的 掌握用線性表實現一元多項式的基本運算。實驗內容 使用鏈式儲存實現一元多項式的加法 減法 乘法和求導。即 c x a x b x c x a x b x c x a x b x c x a x 選單 1 c 分別建立兩個...