Bilgisayar Bilimlerinde Sıralama ve 'Gerçek' Dünyada Sıralama


87

Yazılımdaki algoritmaları ve engelin üstesinden gelmenin olası yollarını düşünüyordum O(nlogn). Pratik anlamda daha hızlı sıralamanın mümkün olduğunu sanmıyorum, bu yüzden lütfen yaptığımı düşünmeyin.

Bununla birlikte, neredeyse tüm sıralama algoritmalarında, yazılımın her bir öğenin konumunu bilmesi gerekir. Hangisi mantıklı, aksi takdirde, her bir öğeyi bir sıralama kriterine göre nereye yerleştireceğini nasıl bilecek?

Ancak bu düşünceyi gerçek dünya ile kesiştiğimde, bir santrifüjün, molekülleri yoğunluğa göre "sıraladığında" her molekülün hangi konumda olduğu hakkında hiçbir fikri yoktur. Aslında, her molekülün konumu umurunda değil. Bununla birlikte, her molekülün yoğunluk ve yerçekimi yasalarını takip etmesi nedeniyle, nispeten kısa bir süre içinde trilyonlarca maddeyi sıralayabilir - bu da beni düşündürdü.

Listenin sırasını 'zorlamak' her düğümde bir miktar ek yük ile (düğümlerin her birine bağlı bir değer veya yöntem) mümkün olabilir mi? Santrifüj gibi bir şey, burada yalnızca her bir eleman uzaydaki göreceli konumunu önemsiyor (diğer düğümlerle ilişkili olarak). Veya bu, hesaplamadaki bazı kuralları ihlal ediyor mu?

Bence burada öne sürülen en büyük noktalardan biri doğanın kuantum mekaniksel etkileri ve tüm parçacıklara aynı anda paralel olarak nasıl uygulandıklarıdır.

Belki de klasik bilgisayarlar, sıralamayı doğası gereği O(nlogn), kuantum bilgisayarların bu eşiği geçip O(logn)paralel olarak hareket eden algoritmalara geçebildiği etki alanına sınırlar.

Bir santrifüjün temelde paralel bir balon türü olduğu nokta doğru görünüyor, ki bu da bir zaman karmaşıklığına sahiptir O(n).

Sanırım bir sonraki düşünce, eğer doğa sıralayabiliyorsa O(n), bilgisayarlar neden olamıyor?


44
Santrifüj sadece büyük ölçüde paralel bir balon sıralama uygulamasıdır, hiçbir şey fantezi değildir.
el.pescado

3
nYalnızca bir dizi nöğeyi ayırmak için işlemcilere (çekirdeklere) sahip olduğunuzda, O(n)karmaşıklığı kolayca elde edebilirsiniz . Acı bir gerçek şu ki, genellikle uzun dizileri (binlerce ve milyonlarca öğe) yalnızca 2..10 çekirdekli CPU üzerinde sıralamak zorundayız.
Dmitry Bychenko

24
N log n'nin, öğe çiftlerini karşılaştıran bir sıralamada yapılması gereken karşılaştırma sayısı olduğuna dikkat edin . Bir sıralama algoritmasının öğe çiftlerini karşılaştırmasına gerek yoktur ; İkili karşılaştırma yapmayan bir sıralama bulabilirseniz, bunu n log n'den daha hızlı yapabilirsiniz.
Eric Lippert

7
Eksik olan şey, solüsyondaki bu moleküllerin her birinin işlem birimleri olmasıdır. Molekülleri sayan bir emülatör yoktur - moleküller kendilerini sayarlar. Bir analog bilgisayar, sıralamanız gereken öğeler kadar işlemci çekirdeğine ve bağımsız belleğe sahip olacaktır. O(n)kendi başına size hiçbir şey söylemez - yalnızca benzer kısıtlamalara sahip algoritmaları karşılaştırmak ve benzer mimarilerde çalıştırmak için kullanışlıdır; algoritmik karmaşıklık için giriş kurslarında, santrifüjler veya gerçek bilgisayarlarla pek ilgisi olmayan çok basitleştirilmiş bir "bilgisayar" modeli kullanıyoruz :)
Luaan

4
Bu soruyu konu dışı olarak kapatmaya oy veriyorum çünkü cs.stackexchange.com'a ait
Robert Fraser

Yanıtlar:


71

DÜZENLEME: Bir santrifüjün mekanizmasını yanlış anlamıştım ve öyle görünüyor ki bir karşılaştırma yapıyor, büyük ölçüde paralel bir karşılaştırma yapıyor. Ancak, iki özelliği karşılaştırmak yerine, sıralanan varlığın bir özelliği üzerinde işleyen fiziksel süreçler vardır. Bu cevap, bu nitelikteki algoritmaları kapsar.

Bir santrifüj, öğeler arasındaki karşılaştırmalar yoluyla gerçekten çalışmayan, ancak aslında her bir öğe üzerindeki ayrı ayrı bir özellik ('merkezkaç kuvveti') ile çalışan bir sıralama mekanizması uygular. Bazı sıralama algoritmaları, özellikle Radix Sort , bu temaya girer . Bu sıralama algoritması paralel hale getirildiğinde bir santrifüj örneğine yaklaşmalıdır.

Karşılaştırmalı olmayan diğer bazı sıralama algoritmaları, Kova sıralama ve Sayma Sıralamasıdır . Kova sıralamasının aynı zamanda genel bir santrifüj fikrine de uyduğunu görebilirsiniz (yarıçap bir çöp kutusuna karşılık gelebilir).

Her bir öğenin ayrı ayrı ele alındığı bir diğer sözde 'sıralama algoritması' Uyku Sıralamasıdır . Burada sıralama için kullanılan büyüklük merkezkaç kuvveti yerine zaman olarak işlev görür.


Bu aslında doğru cevaptır - bölmelere ayırma / taban sıralaması, bölmelere ve girdilere O (1) zamanında erişilebilmesi koşuluyla O (n) karmaşıklığına sahiptir.
pjc50

5
"Uyku Sıralamayı hemen düşünen başka biri var mı?" Diye soracaktım. Görünüşe göre, evet :)
CompuChip

Santrifüjler, elemanları karşılaştırarak çalışır; karma işlevi (öncelikle) yoğunluktur. Örneğin, bir propan-hava karışımını santrifüj ederseniz, sınırlara göre ayrılmış propan elde edersiniz; ancak propan ve suyu santrifüje tabi tutarsanız, propan merkeze doğru sınıflandırılır (su daha yoğundur). Bu süreç, bir "balon sıralama" nın adını aldığı fiziksel süreçle neredeyse tamamen aynıdır.
Nat

SleepSort'un karmaşıklığı aslında planlayıcının karmaşıklığına bağlı değil mi?
Morwenn

@Morwenn eski linux zamanlayıcısı O (1) iken yenisi O (log n) idi. Bunların her ikisi de uykudaki sabit faktörler tarafından ağır basmaktadır
user1952500

35

Hesaplama karmaşıklığı her zaman bazı hesaplama modellerine göre tanımlanır. Örneğin, tipik bir bilgisayarda O ( n ) olan bir algoritma, Brainfuck'ta uygulanmışsa O (2 n ) olabilir .

Santrifüj hesaplama modelinin bazı ilginç özellikleri vardır; Örneğin:

  • keyfi paralelliği destekler; Çözeltide kaç tane parçacık olursa olsun, hepsi aynı anda sıralanabilir.
  • kütle olarak kesin doğrusal bir tür parçacık vermez, çok yakın (düşük enerjili) bir yaklaşım verir.
  • Sonuçta tek tek parçacıkları incelemek mümkün değildir.
  • parçacıkları farklı özelliklere göre sıralamak mümkün değildir; sadece kitle desteklenir.

Genel amaçlı bilgi işlem donanımında böyle bir şeyi uygulama yeteneğimiz olmadığı göz önüne alındığında, modelin pratik ilgisi olmayabilir; ama yine de ondan öğrenilecek bir şey olup olmadığını görmek için incelemeye değer olabilir. Belirsiz algoritmalar ve kuantum algoritmalarının her ikisi de aktif araştırma alanları olmuştur, örneğin, bugün hiçbiri aslında uygulanabilir olmasa da.


Doğa / fizik genel olarak paraleldir (bu yüzden seri bilgisayarlarımızda simüle etmek hesaplama açısından çok pahalıdır), yani evet, OP'nin benzetmesinin büyük bir kusuru var. Partiküllerin / moleküllerin bir test tüpü veya herhangi bir şey boyunca hareket etmesi hala zaman alır, bu nedenle daha uzun bir test tüpü iplik başına daha fazla iş gibidir, ancak daha geniş bir test tüpü daha fazla paralelliktir. (Ve bir santrifüjün bir test tüpünün alanı boyunca sıralandığına dikkat edin, bu nedenle, birleşme olmadan birçok paralel türdür, ancak yol boyunca bir miktar etkileşim olabilir. Paralel bilgisayardaki gerçek bir sıralamanın aksine, son birleştirme ile)
Peter Cordes

29

İşin püf noktası, listenizi yalnızca bir santrifüj kullanarak sıralama olasılığına sahip olmanızdır. Diğer gerçek dünya türlerinde olduğu gibi [alıntı gerekli], listenizi sıralama olasılığını değiştirebilirsiniz, ancak tüm değerleri (atomları) kontrol etmeden asla kesin olamayabilirsiniz.

Şu soruyu düşünün: "Santrifüjünüzü ne kadar süreyle çalıştırmalısınız?"
Sadece bir pikosaniye için çalıştırdıysanız, örneğiniz başlangıç ​​durumundan daha az sıralanabilir .. veya birkaç gün çalıştırdıysanız, tamamen sıralanabilir. Ancak, içeriği gerçekten kontrol etmeden bilemezsiniz.


Bu oldukça iyi bir nokta. Nereden biliyorsunuz? Sonra tekrar, eğer mevcut kurallar yeterince iyiyse, bilmek bile ister miydin? (yani, olasılığı önemsiz hale getirecek kadar düşürürseniz).
Kris

Bir parçacığın santrifüjün sonuna ulaşmasının ne kadar süreceğini her zaman hesaplayabilirsiniz. İvmeyi biliyorsunuz (w ^ 2 * r burada w açısal hızdır) ve zamanı hesaplayabilirsiniz.
user1952500

1
Doğru, ama bu, kahverengimsi hareket , diğer atomik kuvvetler ve kuantum fiziği ile karıştırıldığı için (teşekkürler, minik şeyler!), Durumu kontrol edene kadar listenizi sıraladığınızdan hala tam olarak emin olamazsınız.
ti7

1
Çok küçük parçacıklarınız yoksa kuantum etkilerini görmezden gelebilirsiniz. Çok küçük parçacıklarınız varsa, sıralama algoritmasının çalışmasına gerek yoktur ve aslında kuantum etkileri nedeniyle çalışmasına güvenemezsiniz. Ve belirsizlik ilkesi nedeniyle durumu güvenilir bir şekilde kontrol edemezsiniz (bir parçacığın kontrol edilmesi diğer parçacıkların hareket etmesine neden olur).
user1952500

1
@Kris Pekala, santrifüjün mükemmel şekilde sıralanmadığını biliyoruz. Kan santrifüjünüzde kanın pıhtılaşmasını önlemek gibi, pratik amaç açısından artık farkın önemi kalmayana kadar bunu yapmaya devam ediyoruz. Ancak uranyum santrifüjlerine bakın - çok daha "daha yakın" (ayrılması daha zor) olan ve istenen malzemeden küçük miktarlarda üretmek için büyük bir masrafla tekrar tekrar ayırmaya devam eden devasa bir tesis gerektiren parçaları ayırmaları gerekir. Ve santrifüjün belirli bir boyutu var ve ayırma süresi tüplerin genişliğiyle orantılı ve ... Sadece O (n), yaşasın diyemezsin!
Luaan

5

Bilgisayar tabanlı "sipariş" için gerçek bir dünya örneği, birbirleriyle işbirliği içinde çalışan ve "dron sürüleri" olarak bilinen otonom dronlardır. Dronlar hem birey hem de grup olarak hareket eder ve iletişim kurar ve birden fazla hedefi takip edebilir. Drone'lar, hangi drone'ların hangi hedefleri izleyeceğine ve drone'lar arasındaki çarpışmalardan kaçınma ihtiyacına toplu olarak karar verir. Bunun ilk versiyonları, formasyonda kalırken yol noktalarından geçen dronlardı, ancak formasyon değişebilir.

Bir "sıralama" için, drone'lar belirli bir sırayla bir çizgi veya model oluşturacak şekilde programlanabilir, başlangıçta herhangi bir permütasyon veya şekilde serbest bırakılabilir ve toplu olarak ve paralel olarak sıralı çizgiyi veya modeli hızlı bir şekilde oluşturabilirler.

Bilgisayar tabanlı bir sıralamaya geri dönersek, sorunlardan biri, tek bir ana bellek veri yolu olması ve çok sayıda nesnenin bellekte paralel olarak hareket etmesinin bir yolu olmamasıdır.

her bir elemanın konumunu bilin

Teyp sıralaması durumunda, her bir öğenin (kaydın) konumu bilgisayar tarafından değil, yalnızca "teyp" tarafından "bilinir". Teyp tabanlı sıralamanın aynı anda yalnızca iki öğeyle çalışması ve bir teyp üzerindeki çalıştırma sınırlarını belirtmenin bir yolu (dosya işareti veya farklı boyutta bir kayıt) gerekir.


4

IMHO, insanlar günlüğü aşırı düşünüyor (n). O (nlog (n)) IS pratikte O (n). Ve sadece verileri okumak için O (n) 'ye ihtiyacınız var.

Quicksort gibi birçok algoritma, öğeleri sıralamak için çok hızlı bir yol sağlar. Pratikte çok hızlı olacak hızlı sıralama varyasyonlarını uygulayabilirsiniz.

Doğası gereği tüm fiziksel sistemler sonsuz derecede paraleldir. Bir kum tanesinde bir yığın atomunuz olabilir, doğa her bir atomdaki her bir elektronun nerede olması gerektiğini bulmak için yeterli hesaplama gücüne sahiptir. Dolayısıyla, yeterli hesaplama kaynağınız (O (n) işlemci) varsa, n sayıları log (n) zamanda sıralayabilirsiniz.

Yorumlardan:

  1. K sayıda elemanı olan bir fiziksel işlemci verildiğinde, en fazla O (k) 'lik bir paralellik elde edebilir. Keyfi olarak n sayı işlerseniz, yine de k ile ilişkili bir hızda işler. Ayrıca, bu sorunu fiziksel olarak formüle edebilirsiniz. Kodlamak istediğiniz sayı ile orantılı ağırlıklara sahip n adet çelik bilye oluşturabilirsiniz, bu teoride bir santrifüj ile çözülebilir. Ama burada kullandığınız atom miktarı n ile orantılıdır. Oysa standart bir durumda, bir işlemcide sınırlı sayıda atomunuz vardır.

  2. Bunu düşünmenin başka bir yolu da, diyelim ki her numaraya bağlı küçük bir işlemciniz var ve her işlemci komşularıyla iletişim kurabilir, tüm bu sayıları O (log (n)) zamanında sıralayabilirsiniz.


Ancak hesaplama sadece bu değil - bazı işleri yapmak için doğanın fiziksel özelliklerini kullanmak mı? Burada kuantum hesaplamaya geçiyor olabilirim, ancak fiziksel olarak yapılabiliyorsa, hesaplamalı olarak yapılabilmeli mi? Belki de klasik hesaplama, O (nlogn) ve O (logn) arasındaki yol blokudur.
Kris

2
@Kris Tam olarak değil. K sayıda elemanı olan bir fiziksel işlemci verildiğinde, en fazla O (k) 'lik bir paralellik elde edebilir. Keyfi olarak n sayı işlerseniz, yine de k ile ilişkili bir hızda işler. Ayrıca, bu sorunu fiziksel olarak formüle edebilirsiniz. Kodlamak istediğiniz sayı ile orantılı ağırlıklara sahip n adet çelik bilye oluşturabilirsiniz, bu teoride bir santrifüj ile çözülebilir. Ama burada kullandığınız atom miktarı n ile orantılıdır. Oysa standart bir durumda, bir işlemcide sınırlı sayıda atomunuz vardır.
ElKamina

Bu sınır QM nesneleri için de geçerli mi? Sadece meraktan
Kris

1
@Kris QM'i cevaplayacak kadar derinlemesine anlamıyorum.
ElKamina

Telaşa gerek yok! Sadece çok merak ediyorum ve uyuyamıyorum haha. İlginç cevaplar için teşekkür ederim.
Kris

4

Üniversiteye başladığım yaz aylarında liseden sonra bir ofiste çalıştım. Diğer şeylerin yanı sıra AP Bilgisayar Bilimi'nde sıralama ve arama eğitimi almıştım .

Bu bilgiyi hatırlayabildiğim birkaç fiziksel sistemde uyguladım:

Başlamak için doğal birleştirme sıralaması…

Bir çekmecede dosyalanması gereken, dosya kartı boyutunda bir yırtma içeren çok parçalı formlar yazdırılmış bir sistem.

Bir yığınla başladım ve başlamak için yığını sıraladım. İlk adım, elinize kolayca yerleştirilebilecek kadar az 5 tane almaktır. Sıralanan paketi, ayrı tutmak için her yığını çapraz olarak aşağıya yerleştirin.

Ardından, her bir yığın çiftini birleştirerek daha büyük bir yığın oluşturun. Tek bir yığın kalana kadar tekrarlayın.

… Tamamlanacak ekleme sıralaması

Sıralanan kartları dosyalamak daha kolaydır, çünkü her biri aynı açık çekmeceden biraz daha aşağıda yer alır.

Taban sıralaması

Bunu, tekrar tekrar öğretmeye çalışmasına rağmen, bunu nasıl bu kadar hızlı yaptığımı kimse anlamadı.

Büyük bir kontrol koçanı kutusu (delikli kartların boyutu) sıralanmalıdır. Büyük bir masada solitaire oynamaya benziyor - dağıtın, üst üste koyun, tekrarlayın.

Genel olarak

30 yıl önce, ne sorduğunuzu fark ettim: fikirler fiziksel sistemlere oldukça doğrudan aktarılıyor çünkü karşılaştırmalar ve kayıtları işlemenin göreceli maliyetleri ve önbelleğe alma seviyeleri var.

İyi anlaşılmış eşdeğerlerin ötesine geçmek

Konunuzla ilgili bir makale hatırlıyorum ve spagetti türünü ortaya çıkardı . Anahtar değerini belirtmek için bir uzunlukta kurutulmuş erişte kırpın ve bunu kayıt kimliği ile etiketleyin. Bu O (n), her bir öğeyi bir kez işliyor.

Ardından paketi alıp masanın bir ucuna dokundunuz. Alt kenarlarda hizalanırlar ve şimdi sıralanırlar. En uzun olanı önemsiz bir şekilde çıkarabilir ve tekrarlayabilirsiniz. Okuma da O (n) 'dir.

Burada "gerçek dünyada" algoritmalara karşılık gelmeyen iki şey oluyor. İlk olarak, kenarları hizalamak paralel bir işlemdir. Her veri öğesi aynı zamanda bir işlemcidir (fizik yasaları ona uygulanır). Yani, genel olarak, mevcut işlemeyi n ile ölçeklendirirsiniz, temelde klasik karmaşıklığınızı n üzerindeki bir çarpana bölersiniz.

İkincisi, kenarları hizalamak bir sıralamayı nasıl başarır? Gerçek sıralama bile bile, tek adımda en uzun bulmasını sağlar okuma-out olduğunu vermedi en uzun bulmak için hepsini karşılaştırın. Yine, n'nin çarpanına bölün, böylece en büyüğü bulmak şimdi O (1) olur.

Başka bir örnek de analog hesaplamayı kullanmaktır: fiziksel bir model sorunu "anında" çözer ve hazırlık çalışması O (n) 'dur. Prensipte hesaplama, önceden hazırlanmış öğelerin sayısı ile değil, etkileşim halindeki bileşenlerin sayısı ile ölçekleniyor. Dolayısıyla, hesaplama n² ile ölçeklenir. Düşündüğüm örnek, bir haritada delikler açarak, deliklerden geçen dizelere ağırlık asarak ve tüm dizeleri bir halka üzerinde toplayarak yapılan ağırlıklı çok faktörlü bir hesaplamadır.


Spagetti türü eğlenceli bir okumaydı. Bunun hakkında düşünmekten zevk aldım ama en uzun erişte için tarama eylemini eleştiriyorum. Erişte taradığınız için bu gerçekten bir O (1) işlemi değildir. On bin erişte ve benzer uzunlukta birkaç tane hayal edin ... Bu bir O (1) "göz küresi" operasyonu değil. Gerçekte, en uzun olanı bulmak için tüm ayrılmamış erişteleri taramak gerekir.
ThisClark

Tüm erişteleri, avucunuzu tüm demet üzerine koyarak ve elinizle temas eden en uzun erişteyi çekerek "tarayabilirsiniz". Erişte uzunluğu çok yakınsa, en uzun erişteyi almak için daha hassas bir "el" yüzeyi kullanın. Erişteler, seçim sıralamasında olduğu gibi seri olarak seçilmez, hepsi bir kerede seçilir, bu nedenle kullanılabilir O (n) "hesaplama" gücü vardır.
Bradd Szonye

1
@ThisClark daha hassas bir düzene ihtiyacınız var: erişteleri hizalayan alttaki durdurmaya paralel düz bir düzlem. Bir erişte (en uzun) dokunulana ve sıkıştırma altına alınana kadar dikkatlice indirin. Her şehriye karşı düzlemin yüksekliği karşılaştırılması paralel olarak yapılır tarafından erişte. Daha yüksek bir katsayıya ihtiyaç olduğunu söylüyorsunuz, ancak bu argüman Büyük-O'yu değiştirmiyor.
JDługosz

3

Sıralama hala O (n) toplam süredir. Bundan daha hızlı olması Paralelleştirme nedeniyledir .

Bir santrifüjü n tane çekirdek üzerinde paralelleştirilmiş n atomluk bir Bucketsort olarak görebilirsiniz (her atom bir işlemci görevi görür).

Paralelleştirme ile sıralamayı daha hızlı yapabilirsiniz, ancak yalnızca sabit bir faktörle yapabilirsiniz çünkü işlemci sayısı sınırlıdır, O (n / C) hala O (n) 'dir (CPU'larda genellikle <10 çekirdek ve GPU'lar <6000)


2

Santrifüj düğümleri tasnif etmiyor, onlara bir kuvvet uyguluyor ve ona paralel olarak tepki veriyorlar. Dolayısıyla, her düğümün "yoğunluğuna" bağlı olarak paralel olarak yukarı veya aşağı hareket ettiği bir balon sıralaması uygulasaydınız, bir santrifüj uygulamasına sahip olurdunuz.

Gerçek dünyada, bir bilgisayarda fiziksel işlem birimlerinin sayısına eşit olan maksimum gerçek paralel görevlerin olduğu çok büyük miktarda paralel görev yürütebileceğinizi unutmayın.

Sonunda, iki düğüm tarafından eşzamanlı olarak değiştirilemeyeceği için öğe listesine erişimle de sınırlı olacaksınız ...


1

Listenin sırasını 'zorlamak' her düğümde bir miktar ek yük ile (düğümlerin her birine bağlı bir değer veya yöntem) mümkün olabilir mi?

Bilgisayar programlarını kullanarak sıraladığımızda, sıralanan değerlerin bir özelliğini seçeriz. Bu, genellikle sayının veya alfabetik sıranın büyüklüğüdür.

Bir santrifüj gibi bir şey, burada yalnızca her bir eleman uzaydaki göreceli konumunu önemsiyor (diğer düğümlerle ilişkili olarak)

Bu benzetme bana oldukça basit bir baloncuğu hatırlatıyor. Her yinelemede ne kadar küçük sayılar kabarır? Santrifüj mantığınız gibi.

Öyleyse, buna cevap vermek için, yazılım tabanlı sıralamada aslında bu tür bir şey yapmıyor muyuz?


1
Bence haklısın. Sanırım burada analojimi kaybettiğim nokta, her molekülün paralel hareket ettiğini unutmuş olmamdır. Yani, paralel bir balon sıralaması gibi olurdu ...
Kris

1

Her şeyden önce, iki farklı bağlamı karşılaştırıyorsunuz, biri mantık (bilgisayar) ve diğeri (şimdiye kadar) bazı kısımlarını matematiksel formüller kullanarak modelleyebileceğimiz ve biz programcılar olarak bu formülleri simüle etmek için kullanabildiğimiz kanıtlanmış olan fizik. (bazı bölümleri) fiziğin mantık çalışmasında (örneğin oyun motorunda fizik motoru).

İkinci olarak Bilgisayar (mantık) dünyasında, fizikte neredeyse imkansız olan bazı olasılıklara sahibiz, örneğin belleğe erişebilir ve her bir varlığın tam konumunu her seferinde bulabiliriz, ancak fizikte bu Heisenberg'in belirsizlik ilkesi büyük bir problemdir .

Üçüncüsü Santrifüjleri ve işleyişini gerçek dünyadaki bilgisayar dünyasına eşlemek istiyorsanız, sanki birisi (Tanrı) size tüm fizik kurallarının uygulandığı bir süper bilgisayar vermiş ve içinde küçük sıralamanızı yapıyorsunuzdur ( santrifüj kullanarak) ve sıralama probleminizin o (n) 'de çözüldüğünü söyleyerek, arka planda devam eden devasa fizik simülasyonunu görmezden geliyorsunuz ...


0

Başka bir bakış açısı, santrifüjle anlattığınız şeyin "spagetti sıralaması" ( https://en.wikipedia.org/wiki/Spaghetti_sort ) olarak adlandırılan şeye benzer olmasıdır . Diyelim ki değişen uzunluklarda pişmemiş spagetti çubuğunuz var. Onları yumruğunuzda tutun ve dikey olarak indirmek için elinizi gevşetin, böylece uçları yatay bir masaya dayanır. Boom! Yüksekliğe göre sıralanırlar. O (sabit) zaman. (Ya da O (n) çubukları yüksekliğine göre seçip bir ... spagetti rafına koymayı dahil ederseniz, sanırım?)

Orada, spagetti parçalarının sayısında O (sabit) olduğunu not edebilirsiniz, ancak spagettideki sonlu ses hızı nedeniyle, en uzun iplik uzunluğunda O (n) 'dir. Yani hiçbir şey bedavaya gelmiyor.


Bu 11 saat önce söylediğim şeyle aynı. Ve fiziksel sistemlerin n'ye veya n²'ye bölmenize ve algoritma ve hesaplama modelini korumanıza nasıl izin verdiğini açıklamaya devam ettim.
JDługosz

0

Şunu düşünün: "santrifüjlü sıralama" gerçekten daha iyi ölçekleniyor mu? Büyüdükçe ne olacağını düşünün.

  • Test tüpleri daha uzun ve uzamalıdır.
  • Ağır şeylerin dibe inmesi için gittikçe daha fazla ilerlemesi gerekiyor.
  • Hareketsizlik momenti, ayıklama hızına ulaşmak için daha fazla güç ve daha uzun süreler gerektirerek artar.

Santrifüj türüyle ilgili diğer sorunları da dikkate almaya değer. Örneğin, yalnızca dar boyut ölçeğinde işlem yapabilirsiniz. Bir bilgisayar sıralama algoritması 1 ile 2 ^ 1024 arasındaki tam sayıları terletmeden işleyebilir. Bir hidrojen atomunun 2 ^ 1024 katı ağırlığındaki bir şeyi bir santrifüje koyun ve bu bir kara delik ve galaksi yok edildi. Algoritma başarısız oldu.

Tabii ki buradaki gerçek cevap, başka bir cevapta da belirtildiği gibi, hesaplama karmaşıklığının bazı hesaplama modellerine göre olduğudur. Ve "santrifüj sıralama", RAM modeli veya IO modeli veya çok bantlı Turing makineleri gibi yaygın hesaplama modelleri bağlamında bir anlam ifade etmiyor.

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.