簡體   English   中英

您如何證明某語言屬於P類?

[英]How do you show that a language is in the class P?

我有兩種語言:

A = { <M, w> | M accepts w after running for at most 2^500 steps }
B = { <M, w, 1^t> | M accepts w after running for at most t steps }

我需要弄清楚這些語言是否在類P中。我知道一種語言在P類中是否在多時運行。 我很確定語言A的運行時間是指數時間,但我不太確定是否像2 ^ 500這樣的常數使它變為多次時間。

任何幫助表示贊賞,謝謝!

算法時間表示為輸入大小的函數。 如果對於任何輸入,A占用2 ^ 500步,那么它實際上是恆定時間(無論輸入什么,運行時間都是恆定的),這絕對是P。

B采取t步,其中t大概是輸入的大小,因此它是線性時間(時間隨輸入大小線性增加),也以P表示。

如果您遇到的問題需要例如2 ^ t步或t! (階乘)步驟,則不在P中。查找Big O表示法

語言是P ,如果存在算法,則可以確定給定的輸入是否屬於該語言並且以多項式時間運行。 多項式時間,意味着您可以在輸入的長度中找到多項式函數的上限。

要解決您的示例:

  1. 將算法AL₁定義為:
    對於元素<M,w>運行M(w)

    由於M(w)最多取一個常數c = 2⁵⁰⁰步,所以AL₁的復雜度由一個常數多項式來限制。 AL₁ ∈ O(1) 所以AP中

  2. 將算法AL₂定義為:
    對於元素<M,w,1 t >運行M(w,1 t )

    由於M(w,1 t )最多需要t步,因此我們必須將輸入長度和t放在一起。 注意,輸入由w1 t 1 t表示數字t以一元形式輸入(例如1⁵=11111₁=5₁₀)。 這對於輸入長度很重要。 例如1²⁵⁶的長度為256 ,但是256 = 2⁸的長度僅是8 = log₂(256) (二進制)。 因此輸入長度為len(w) + tAL₂ ∈ O(t)成立。 因此, AL₂的復雜度也受多項式的限制,因此語言BP中

讓我添加一個示例以說明一元和其他數字系統之間的區別非常重要。

C = { <M, w, t> | M accepts w after running for at most t steps }

C基本上像B ,但是t不是一元數制,因此t的長度為log c (t) 對數的底數c無關緊要,因為它僅產生一個常數因子。

輸入長度現在為len(w) + log(t) ,因此O(t)不必是輸入長度中的多項式。 假設len(w)是一個常數(為簡化起見),則t = c log c (t)在輸入長度上為指數,因此C 不在 P中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM