Polinom zamanda ve güçlü polinom zamanda çalışan bir algoritmanın tanımları


18

Wikipedia bunu

Bir algoritmanın, çalışma süresi, algoritma için girdi boyutundaki bir polinom ifadesi ile üst sınırlandırılmışsa, yani bir miktar sabit k için olduğunda, bir polinom zamanı olduğu söylenir .T(n)=Ö(nk)

İçinde algoritma çalışır kuvvetle polinom zamanda eğer [8]

  • aritmetik hesaplama modelindeki işlemlerin sayısı, girdi örneğindeki tamsayıların sayısındaki bir polinom tarafından sınırlanır; ve

  • algoritma tarafından kullanılan alan, giriş boyutundaki bir polinom ile sınırlıdır.

In Bernhard Korte Jens Vygen, Kombinatoryal Optimizasyon :

Tanım 1.4.

Rasyonel girişli bir algoritmanın, eğer polinom zamanında çalıştığı söylenir.

  • zamanında çalışacak şekilde n tamsayı vardır , burada n girdi boyutu veÖ(nk)
  • ara hesaplamalardaki tüm sayılar bitleri ile saklanabilir .Ö(nk)

Keyfi girişi olan bir algoritma çalıştırmak için söylenir kuvvetle polinom zamanda eğer

  • n sayısından oluşan herhangi bir giriş için zamanında çalışacak şekilde bir k tamsayısı vardır veÖ(nk)
  • rasyonel girdi için polinom zamanda çalışır.

Yanlışım varsa lütfen düzelt. Fark ettiğim gerçek farklar şunlardır:

  • Polinom zaman algoritmaları için Korte ve Vygen'in tanımı "Wikipedia'nın tanımı + polinom saklama alanı" dır.

  • Güçlü polinom zaman algoritmaları için, Korte ve Vygen'in tanımı ve Wikipedia'nın tanımı, giriş depolama boyutunda polinom zamanı gerektirir. Ancak K ve V'ler ek olarak herhangi bir girişteki sayıların sayısında polinom zamanı gerektirirken, Wikipedia'nın ek olarak giriş boyutunda polinom saklama alanı gerekir.

Peki bu iki kavram için K ve V ve Wikipedia tanımları eşdeğer midir? Aralarındaki diğer farklılıklar ve ilişkiler nelerdir?

Teşekkürler ve saygılar!


Defn'den hemen sonra wikipedia bölümü oldukça iyi bir açıklamaya sahip, yeterince açık değil mi? kaç bitin sayıları temsil ettiği ile ilgilidir ve çok büyük sayılar karmaşıklık ölçümlerini "yukarı" etkileyebilir. K&V kusurlarının prob "yakın" eşdeğeri olduğunu düşünün. rasyonel girdilere gelince, rasyonel değerler üzerindeki aritmetiğin büyüklüğünü büyük ölçüde artırmadığına dair bir kanıt gerekir. bunun tüm girişlerin LCD'sini bularak ve LCD'de rakamlarla tüm aritmetiği yaparak gösterilebileceğini düşünün.
vzn

@vzn: Wikipedia'daki açıklama (1), Turing makinesine karşı aritmetik için iyi ancak güçlü poli amacı ve tanımı konusunda oldukça sığ ve (2) GCD'nin örneklemesinde tamamen yanlıştı.
alexei

Yanıtlar:


5

Resmi tanımlardan önce, "güçlü / zayıf" sınıflandırmanın neyi ayırt etmeyi amaçladığını düşünün.

İlk olarak, birini Turing Machine üzerinde çalıştırmayı düşünün. Her ikisi de, ikili kodlanmış girişin uzunluğunda çok sayıda adımda çok terimli çalışacaktır. Sonuç olarak, her ikisi tarafından gerçekleştirilen aritmetik işlemlerin sayısının ikili kodlanmış girdi uzunluğunda polinom olması gerekir . Dolayısıyla, giriş değerlerinin sayısı veya büyüklükleri arttıkça, Turing Machine için her iki çalışma süresi de polinom olarak büyüyecektir. İkincisini vurgulamak için, güçlü olanın bile daha büyük büyüklüklerde daha fazla TM adımı atacağını unutmayın (en azından ekstra bitleri okuması gerekir). Hiçbir koşulda kişi üslü hale gelmez (ilişkisiz sözde-polinom zamanında olduğu gibi). Tek başına bir Turing makinesiyle, temel bir fark tespit edilemez gibi görünüyor.

Şimdi, her bir işlemin tam sayılar ve aritmetik işlemler üzerinde aritmetik bir işlem olduğu bir aritmetik makinede çalıştırmayı düşünün Ö(1). Giriş sayılarının büyüklüğünü artırdıkça, ikili kodlanmış girişin uzunluğu büyür ve zayıf algoritmanın çalışma süresi artar, ancak güçlü algoritmanın çalışma süresi değişmez, çünkü sayıya bağlı olabilir değiştirmediğiniz giriş sayıları (örn. matris çarpımı ile Öklid'in GCD'si).

Giriş sayılarının sayısı polinomu içindeki aritmetik işlemlerin sayısında çalışan algoritma seti iyi tanımlanmıştır, ancak ikili kodlanmış girişin uzunluğuna katlanan TM adımlarının sayısını alan algoritma sınıfıyla örtüşmektedir ( örneklere bakınız ). Bu nedenle, bu küme için ikinci paragraftaki özellikler geçerli olmaz. İstenmeyen kavşağı hariç tutmak için, bir polinom TM alanı [*] için bir koşul ekliyoruz.

[1] 'de bu iki şekilde ifade edilir:

  • Algoritma bir polinomomal uzay algoritmasıysa ve giriş sayılarının sayısında bir polinom tarafından sınırlanmış bir dizi temel aritmetik işlem gerçekleştirirse, algoritma güçlü bir şekilde polinom zamanda çalışır.
  • Bir polinom algoritması (standart Turing makinesi modelimizde) bir polinom uzay algoritması ve aritmetik modeldeki polinom zaman algoritmasıdır ( açıklama için bu soruya bakın ).

Zaten ne bu alt sınıflandırma "verimli" algoritmaları fiziksel bilgisayarlar Turing makineleri daha aritmetik makineleri benzediği için alt sınıf, yani yararlı olabilir olabilir olabilir fiziksel makine üzerinde hızlı aday olacağını algoritması tespit eğer onların polinom sınırları uzunluğu kodlanmış girişin diğer değerleri karşılaştırılabilir (örn.Ö(n3) zayıfa karşı Ö(n2))

[*] İkinci koşul her yerde polinom alanı olarak ifade edilirken, polinom zamanı istemek benim için daha anlamlı. Birincisi daha kapsayıcı ama tuhaf. Polinom zamanından daha fazlasını alan güçlü polinom algoritmaları var mı? Tekrarlanan kareleme örneğinin ne polinom zamanı ne de polinom alanı gerektirdiğini unutmayın.

[1] Grötschel, Martin; László Lovász, Alexander Schrijver (1988). "Karmaşıklık, Oracles ve Sayısal Hesaplama". Geometrik Algoritmalar ve Kombinatoryal Optimizasyon. Springer. ISBN 0-387-13624-X.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.