Θ (1) bellek ne anlama geliyor?


13

Profesörden in-situ algoritma tanımım var, ama anlamıyorum.

Yerinde algoritmalar Θ (1) bellekle çalışan algoritmaları ifade eder.

Bu ne anlama geliyor?


3
Landau notasyonunu biliyor musunuz ?
David Richerby

4
"Bir algoritmanın yerinde bir algoritma veya yerinde bir algoritma olduğu söylenir, eğer algoritmayı yürütmek için gereken fazladan bellek O (1) ise, yani [hafıza] ne kadar büyük olursa olsun bir sabiti aşmaz giriş . Örneğin, yığınsal yerinde bir sıralama algoritması olup." en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@Auberon, den başka bir gereksinim daha getirdiğine dikkat edilmelidir : herhangi bir özel çağırmada kullanılan toplam belleğin , girdinin boyutu ne olursa olsun sabitin altına düşmemesi . O ( 1 )Θ(1)O(1)
Olathe

1
@Olathe Henüz sıfırdan fazla, ancak herhangi bir kaynağın sabitinden daha az kullanan bir algoritma görmedim
adrianN

@adrianN, AES şifreleme dosyaları sabit üst sınır altında RAM kullanımı ile yapılır. Bir kerede bir bloğu işlersiniz, her bloğun işlenmesi için aynı miktarda RAM gerekir ve RAM bir bloktan diğerine tekrar kullanılabilir. Daha basit bir örnek, ASCII kodlu bir dosyadaki tüm harfleri büyük harfe dönüştürmektir. Dosyanın 4096 baytlık bir bloğunda okuyabilir, 4096 baytlık bu işlemi yapabilir, bu bloğun sonuçlarını yazabilir ve bir sonraki blok için aynı RAM'i yeniden kullanabilirsiniz.
Olathe

Yanıtlar:


13

İlk önce ne anlama geldiğini açalım .Θ(1)

Büyük ve büyük , işlev sınıflarıdır. Orada resmi bir tanım var burada , ama bu soruya amaçları için, bir fonksiyon olduğunu söylemek içindedir sabit olup olmadığını nerede herkes için , . Yani, en çok sabit bir işlev kadar hızlı büyür.Of O ( 1 ) c x f ( x ) C fΘfO(1)cxf(x)Cf

Big- , sabit fonksiyonlar için fazla bir şey ifade etmez, çünkü algoritma süresini veya alan kullanımını açıklarken sabitin altında çok fazla bir şey yoktur. Ancak bunun ne anlama geldiğini açıklamak için, eğer sabitleri varsa , tüm , . Yani, en azından sabit bir fonksiyon kadar hızlı ve en fazla hızlı büyür.Θc , d x d f ( x ) c ffΘ(1)c,dxdf(x)cf

Şimdi bunun bellek kullanımı ile ne ilgisi var? algoritmasını düşünün . Bir giriş verilmiş, bazı (matematiksel) işlevi yoktur , sizin algoritma maksimum bellek kullanımını verir büyüklüğünün herhangi girişine . Bu işleve diyelim .n A n m e mAnAnmem

Şimdi iki konseptimizi birleştiriyoruz. Bir algoritma belleği kullanıyorsa, bellek kullanım fonksiyonu , yani herhangi bir giriş için kullanılan bellek ile arasında olacak şekilde bazı .Θ ( 1 ) d , c d cΘ(1)Θ(1)d,cdc

Kısacası, bu algoritmanın bellek kullanımının girdiden bağımsız olarak sabit bir aralıkta olduğu anlamına gelir.

Bellek fonksiyonu genellikle algoritmaya girişi depolamak için kullanılan belleği hesaba katmaz, aksi takdirde bellek kullanımı her zaman en az .Θ(n)


"girdisine etkili bir şekilde bağlı değil." - hangi "etkin" tanımı için?
Raphael

Kullanıldığı gibi, kullanılan bellek girişe bağlı olarak değişebilir, ancak yalnızca sabit bir aralıkta olabilir. Daha iyi bir ifade düşünebilirseniz, düzenlemekten çekinmeyin.
jmite

dc

basit açıklayıcı örnek (ler) yardımcı olacaktır
vzn

8

Algoritmanın sabit alan karmaşıklığı

Algoritmanızın kullandığı bellek miktarı girişten bağımsızdır.

1010

Bununla birlikte, Yerinde algoritmalar girdinin kendisi üzerinde amaçlanan işlevlerini yerine getirir ve bu nedenle çok az alan gerektirir veya fazladan alan gerektirmez. Algoritma yürütüldüğünde giriş genellikle çıktı tarafından yazılır. ( ref )

Yerinde algoritmalar, girdinin kapladığı alanı dikkate almaz ve alan karmaşıklığını hesaplarken yalnızca fazladan alanı dikkate alır.


3
Θ(1)

@ Bayt cinsinden her girdi tarafından işgal edilen alan ve sayı cinsinden girdi sayısı iki farklı kavram değil mi?
Prateek

0

Bu, algoritma için gereken ek bellek miktarının, yeterince büyük giriş için giriş boyutuna bağlı olmayan sabit bir miktardan fazla olmadığı anlamına gelir.


2
ΘOΩO(x2)f(x)=3x2 f(x)=xΘ(x2)f(x)=3x2f(x)=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.