Loading Now

時間複雜度

目錄

測量複雜度

  • Worst-case analysis
  • Average-case analysis

定義一個M是Deterministic Turing Machine並且會根據輸入決定停止

  • 規範M的執行時間或者時間複雜度可以表示成一個function quicklatex.com-add0fee9dec88f015f5c29b655d45efc_l3 時間複雜度,其中quicklatex.com-7c7ac5ccd3883292650e0a5ffc882475_l3 時間複雜度是指M輸入長度n的最大步驟數量
  • 如果quicklatex.com-7c7ac5ccd3883292650e0a5ffc882475_l3 時間複雜度是M的執行時間,可以表示M執行quicklatex.com-7c7ac5ccd3883292650e0a5ffc882475_l3 時間複雜度的時間並且稱M是一個quicklatex.com-7c7ac5ccd3883292650e0a5ffc882475_l3 時間複雜度時間的Turing Machine

Big-O以及Small-o漸進符號

定義:quicklatex.com-55a3d1397f699b3235e64669e1fa4de3_l3 時間複雜度,如果存在一個正整數c(通常是個常數)以及quicklatex.com-750440185f74a65f023ebc2bdba12a97_l3 時間複雜度使得任何的quicklatex.com-538343e1d4bbfc2687aba56e84418efa_l3 時間複雜度
範例:quicklatex.com-51214b41f73d107e08001f771b533ece_l3 時間複雜度, quicklatex.com-868a340f4728ca2e257612a3aff208c0_l3 時間複雜度
顧名思義就是存在一組時間複雜度是目前quicklatex.com-7c7ac5ccd3883292650e0a5ffc882475_l3 時間複雜度的執行時間上限
定義:quicklatex.com-7369b8f5c32e8fbe94b9f708fb25d520_l3 時間複雜度, 表示quicklatex.com-a838b8ed1cc0aa0d9d87dd9b411c27b8_l3 時間複雜度 if

    quicklatex.com-e8fd6f19a2af32b53a385f6934d14ff5_l3 時間複雜度


範例:quicklatex.com-cb2245b2989819f70f52f1f562d4d01b_l3 時間複雜度
定義:quicklatex.com-1d848b9e4fcd42d61eec36208a2258ee_l3 時間複雜度作為一個function
quicklatex.com-c22d65e0fb5177410aa3b8a3c17c3f8d_l3 時間複雜度: 時間複雜度類別 = {L | L是一個language可以被quicklatex.com-c339c2cecf22af8ec559b97eaaeb0b51_l3 時間複雜度時間的Turing Machine給決定}
不同的模型設計之下會有不同的複雜度關聯
定理:quicklatex.com-18a3c76140d8114cbd1d07f6b9444401_l3 時間複雜度一個function quicklatex.com-1754dd21b3c5b68743afba7af9b02699_l3 時間複雜度,任何quicklatex.com-39109f396a2b0d47bf2ef88160bae0ef_l3 時間複雜度時間的Multi-tape Turing Machine等同於quicklatex.com-d53ed8b45af40f330ef0274822752a1e_l3 時間複雜度時間的單一tape Turing Machine
定理:quicklatex.com-18a3c76140d8114cbd1d07f6b9444401_l3 時間複雜度一個function quicklatex.com-1754dd21b3c5b68743afba7af9b02699_l3 時間複雜度,任何quicklatex.com-39109f396a2b0d47bf2ef88160bae0ef_l3 時間複雜度時間的Non-deterministic single-tape Turing Machine等同於quicklatex.com-52a48adde8e7f9172e45fa60981f6ea7_l3 時間複雜度時間的deterministic single-tape Turing Machine

P類別

P是指language的類別能夠被deterministic single-tape Turing Machine在多項式時間(polynomial time)內被決定(decidable),換言之可以表示成:

    quicklatex.com-7b43b0d8784044961187f9e481b1683a_l3 時間複雜度


舉例來說:
有一組quicklatex.com-e772e4b6c8369fb534c5a374c8da7096_l3 時間複雜度 = {<quicklatex.com-71f614abe160125caa793d88c27aa381_l3 時間複雜度>|quicklatex.com-fbbb7f15bc14ef6b8aa38af3fba7ccf6_l3 時間複雜度是一個有向圖其中存在一條有向路徑可以從quicklatex.com-57927b2143eeeaf1684c0c356d8ef2f6_l3 時間複雜度到達quicklatex.com-a0bc2466872fc888677c06ed53cf2f32_l3 時間複雜度}

PATH 時間複雜度

定義:quicklatex.com-42a6175a826d599961eb37d824816a68_l3 時間複雜度
另外像是 quicklatex.com-6a103dce5353c84e2535f56b6b2b2ae7_l3 時間複雜度 = {<quicklatex.com-4f650efec0dfa3fd438bc45e97f0b8ac_l3 時間複雜度>|quicklatex.com-4f650efec0dfa3fd438bc45e97f0b8ac_l3 時間複雜度為互質},也同樣定理:quicklatex.com-e3c7c0d8228494e077a92275cb8b38d4_l3 時間複雜度

NP類別

Hamiltonian path是一組有向圖quicklatex.com-fbbb7f15bc14ef6b8aa38af3fba7ccf6_l3 時間複雜度存在一條有向路徑可以從quicklatex.com-57927b2143eeeaf1684c0c356d8ef2f6_l3 時間複雜度走到quicklatex.com-a0bc2466872fc888677c06ed53cf2f32_l3 時間複雜度且每個點只經過一次
quicklatex.com-3dd0e688537d2525212cf052401b822a_l3 時間複雜度 = {<quicklatex.com-71f614abe160125caa793d88c27aa381_l3 時間複雜度>|G是一個有向圖存在一條Hamiltonian path從quicklatex.com-57927b2143eeeaf1684c0c356d8ef2f6_l3 時間複雜度quicklatex.com-a0bc2466872fc888677c06ed53cf2f32_l3 時間複雜度}

HAMPATH 時間複雜度

可以觀察到存在指數時間(exponential time)的演算法來解決HAMPATH問題,而要驗證HAMPATH問題的話只要給路徑的點跟線就可以在多項式時間裡驗證
quicklatex.com-4d672a64dfcdbfe4ab96238b046360e7_l3 時間複雜度 = {quicklatex.com-711d7921837f3f1c6da052c2901ac1ed_l3 時間複雜度, 對於所有的整數quicklatex.com-f18dfa2a003b12d6d19803e122719e1e_l3 時間複雜度},找兩個整數相乘在一起的稱作合成數
quicklatex.com-0f94700cf34d79f7c9ececad4d6532aa_l3 時間複雜度,可以看到如果有給quicklatex.com-de3760f44fde740f2747acd6cab18f03_l3 時間複雜度這兩個通常稱作certificate(證據)的話就可以在多項式時間內驗證合成數
但要注意也並不是每個問題都能夠在多項式時間裡驗證
定義:存在一個演算法針對language A的驗證者(verifier) V,其中quicklatex.com-1eab4c0c102b982a49e588a48f72a2ab_l3 時間複雜度針對某些字串quicklatex.com-649f5c6049983e9f2f1a9ec578f0dfed_l3 時間複雜度

  • 一個多項式時間的verifier執行驗證長度quicklatex.com-9d2a8c257a6d1853308c4a818045c137_l3 時間複雜度的字串在多項式時間內
  • 一個language A是多項式可驗證的話代表這是一個多項式時間的verifier
  • 一個verifier使用額外的資訊quicklatex.com-81a28fc2c2c83ad9a69e04866a90c34a_l3 時間複雜度來驗證字串quicklatex.com-9d2a8c257a6d1853308c4a818045c137_l3 時間複雜度屬於A的集合成員
  • C: 證據(certificate)或者可以用來證明屬於A的集合成員
    定義:NP是一個擁有多項式時間驗證者的language集合,代表可以在多項式時間內驗證完,但不保證能夠在多項式時間內找出答案
    NP: Non-deterministic Polynomial time

定義:quicklatex.com-aa38e7ea60b53ea04fd1e3e4f9c423c6_l3 時間複雜度是一個language可以被Non-Deterministic TM在quicklatex.com-c339c2cecf22af8ec559b97eaaeb0b51_l3 時間複雜度時間內被決定(decided)quicklatex.com-adc6326db4059cd20c2de71f76bea1fd_l3 時間複雜度
定理:一個language如果在NP裡面的話若且唯若會被Non-deterministic polynomial time Turing Machine被決定(decided)
證明:
quicklatex.com-46b9e443e1ff7340336eca116a647ead_l3 時間複雜度:使quicklatex.com-e30879c9babcbb357c5e09d0d557f1da_l3 時間複雜度以及證明A會被NTM N所決定(decided).
根據NP的定義讓V是一個多項式時間驗證者針對A
首先假設V可以對輸入長度n的執行驗證時間在quicklatex.com-f0b882a20b62722c3ed0e247d695a6d1_l3 時間複雜度的時間內
開始來建構這個N:
N = 可以輸入長度n的字串quicklatex.com-9d2a8c257a6d1853308c4a818045c137_l3 時間複雜度

  1. Non-deterministically去猜長度quicklatex.com-f0b882a20b62722c3ed0e247d695a6d1_l3 時間複雜度的字串c
  2. V執行驗證猜的這個字串quicklatex.com-1f0cf664c0f967f2e7a1160e9a5819ef_l3 時間複雜度
  3. 如果V可以接受,輸出ACCEPT,反之亦然,輸出REJECT

quicklatex.com-8b38b3b3ec5e2e64e373d5a15d12b2c1_l3 時間複雜度:假設A可以被NTM N在多項式時間內所決定(decided)並且建構出多項式時間驗證者V功能如下:

  1. 模擬N輸入quicklatex.com-9d2a8c257a6d1853308c4a818045c137_l3 時間複雜度,處理c的每一個符號像是Non-deterministic的方法一樣
  2. 如果Non-deterministic的branch可以accept,輸出ACCEPT,反之輸出REJECT

推論:

    quicklatex.com-50e150ecd39e2d2337e233d49b053f2b_l3 時間複雜度

NP問題範例

定義:clique是一個無向圖,而這個圖內每兩個點(node)必定存在一條邊(edge)

  • 一個k-clique代表clique裡面包含k個點(nodes)
5Clique 時間複雜度

定義:CLIQUE = {<quicklatex.com-b1d140ddb4409753914400009468cb1b_l3 時間複雜度>|quicklatex.com-fbbb7f15bc14ef6b8aa38af3fba7ccf6_l3 時間複雜度是一個無向圖擁有k-clique}

  • 定義:CLIQUE屬於NP

證明:
N = 輸入quicklatex.com-86a3fdc8f8d728509c53ef6cc19b7b2e_l3 時間複雜度是一個圖:

  1. Nondeterministically猜一組quicklatex.com-fbbb7f15bc14ef6b8aa38af3fba7ccf6_l3 時間複雜度裡有quicklatex.com-44898a6f13ac28ec3124ed4f5f7acd9b_l3 時間複雜度個nodes的子集合quicklatex.com-81a28fc2c2c83ad9a69e04866a90c34a_l3 時間複雜度
  2. 測試quicklatex.com-fbbb7f15bc14ef6b8aa38af3fba7ccf6_l3 時間複雜度是否包含所有的邊都連接這條quicklatex.com-81a28fc2c2c83ad9a69e04866a90c34a_l3 時間複雜度
  3. 如果包含的話輸出ACCEPT,反之輸出REJECT

定義:SUBSET-SUM = {quicklatex.com-db9dc11e9514546dda4b8847d705b313_l3 時間複雜度以及對於某些quicklatex.com-fd42d3d9563eee8114d9ceeb30f69fbb_l3 時間複雜度}
例如:<{4, 11, 16, 21, 27}, 25} quicklatex.com-e5661bfa83463fbb807feecd51ce2fd1_l3 時間複雜度 SUBSET-SUM, quicklatex.com-e5d06689b14f58ab6f32966e7312d380_l3 時間複雜度,可以注意到quicklatex.com-f397127b9f73615f759d0eb6118c82c4_l3 時間複雜度quicklatex.com-92b59223dbc89c2f000af1dd19e4fee6_l3 時間複雜度可以是多組子集合 定義:SUBSET-SUM quicklatex.com-e5661bfa83463fbb807feecd51ce2fd1_l3 時間複雜度 NP 證明:N = 輸入quicklatex.com-42f23e52f038c8e59755f526c340790f_l3 時間複雜度

  1. Non-deterministically猜一個S裡面的子集合c
  2. 測試quicklatex.com-81a28fc2c2c83ad9a69e04866a90c34a_l3 時間複雜度是否是一個可以加總出quicklatex.com-a0bc2466872fc888677c06ed53cf2f32_l3 時間複雜度的集合
  3. 如果以上兩點都成功就輸出ACCEPT,反之輸出REJECT

所以我們稍微做個小結

P = 問題能夠被快速(polynomial)決定(decided)出來結果的language類別

NP = 問題能被快速(polynomial)驗證(verified)出來結果的language類別

而電腦科學從1950年開始發展至今一直都還沒有嚴謹證明出來的Open Problem

    quicklatex.com-7a456183e04b28126a21ea23a2abc56f_l3 時間複雜度

P到底等不等於NP?

Share this content:

I'm Scientia, currently a graduate student. My research interests include Cryptology, Cryptographic Engineering, Security and Privacy, Computational Complexity, Quantum Cryptography, Hardware Security, Cybersecurity and Anomaly Detection.

Post Comment