Strassen matris çarpma yöntemini nasıl buldu?


18

Ünlü Strassen'in matris çarpma algoritması , geleneksel O (n 3 ) 'den O (n 2.8 )' e zaman karmaşıklığını azalttığı için bizim için gerçek bir muamele .

Ama yaşadığım tüm kaynaklar, Cormen ve Steven Skienna'nın kitabı bile, Strassen'in bunu nasıl düşündüğünü açıkça belirtmiyorlar.

Strassen'in matris çarpma algoritmasının mantığı nedir? Bu şanslı bir kaza mı yoksa daha derin bir şey mi var?


Kimsenin gerçekten bilmediği söylendi, her şey çoğunlukla spekülasyon olurdu. Ancak, (ben okumadım rağmen) uygulanabilir bu buldum.
Dukeling

Bence Strassen alg. wikipedia'da açıktır.
MarshalSHI

4
@meshuai Bence diğer kaynaklarda olduğu gibi , neden düşündüğünü değil , neden işe yaradığını açıklıyor .
Dukeling

2
Strassen'in orijinal makalesine bir göz atabilirsiniz: scgroup.hpclab.ceid.upatras.gr/class/SC/Papers/Strassen.pdf
Axel Kemper

Yanıtlar:


26

Strassen dışında hiç kimse size Strassen'in fikrini nasıl aldığını söyleyemez. Howeber¹, size söyleyebilirim, cebirsel geometri ve temsil teorisi ile ilgileniyorsanız, bu formülü kendiniz nasıl bulabilirdiniz. Bu aynı zamanda Strassen'in formülünün olabildiğince iyi olduğunu veya daha kesin olarak, 7'den az çarpma kullanan iki 2 × 2 matrisin ürününü hesaplayan bir formül olmadığını gösteren araçlar sağlar .

Matrislerle ilgilendiğiniz için temel lineer cebiri bildiğinizi ve daha ileri detaylar için biraz bulanık olacağını varsayıyorum.

Birinci olayım e bir uçak için bir uçaktan bütün lineer haritaların kümesi. Bu temel olarak 2 × 2 matrislerin tümüdür, ancak belirli bir koordinat sistemini unutuyoruz - çünkü “varsayılan sistemden” daha iyi bir koordinat sistemi olsaydı, bunu matris çarpımı için kullanmaya ilgi duyabilirdik. Ayrıca E † ile E'nin ikili boşluğunu ve X = P (E⊗E † ⊗E †) ile tensör ürünü E⊗E † ⊗E † ile ilişkili projektif boşluğu belirtiriz .

Özel formdaki [c⊗α⊗β] X = P'nin (E⊗E † ⊗E †) bir unsuru, bazı uygun koordinat sistemlerinde bir matris katsayısını okuyan matrisler üzerinde temel bir işlem olarak yorumlanabilir A ve bir matris B katsayısı ve bu katsayıların çarpımını bazı matris C'ye yazar . Genel bir unsuru X ürün, yani bu temel operasyonların bir kombinasyonudur tt bir harita olarak anlaşılan iki matrisin, P (e) X, P (e) için P (E), bir nokta , X .

Olağan matris ürün formülü ve Strassen formülü bu doğrusal işlemlerin kombinasyonları olarak ifade edilebilir, bu yüzden W₁ tarafından bu temel işlemlerin [c⊗α⊗β] kümesini belirteyim ve kombinasyonlarını geometrik olarak tanımlayayım.

Let W₂ çeşitliliği olmak secants arasında W₁ içinde X O iki (jenerik) noktalarından geçiyor tüm çizgilerin birliği (kapatılmasını) alarak elde edilir W₁ . Bunu iki temel operasyonun tüm kombinasyonlarından oluşan bir set olarak düşünebiliriz.

Let W₃ çeşitliliği olmak sekant düzlemleri arasında W₁ içinde X O üç (jenerik) noktalarından geçiyor tüm uçakların birliği (kapatılmasını) alarak elde edilir W₁ . Bunu üç temel operasyonun tüm kombinasyonları seti olarak düşünebiliriz.

Benzer şekilde, daha büyük endeksler için sekant çeşitlerini tanımlarız. Bu çeşitlerin gittikçe büyüdüğüne dikkat edin, yani W₁⊂W₂⊂W⋯ ⋯ Bu nedenle klasik matris ürün formülü, matrislerin ürününün bir W a noktası olduğunu gösterir . Aslında

ÖNERME (Strassen) - matrislerin ürün π yatmaktadır W₇.

Bildiğim kadarıyla, Strassen şeyleri bu şekilde koymadı, ancak bu bu soruya geometrik bir bakış açısı. Aynı zamanda Strassen'in formül bu olduğunu, iyi olduğunu kanıtlamak sağlar çünkü Bu bakış açısı, çok faydalıdır π yalan değil W₆ . Burada geliştirilen geometrik yöntemler daha geniş bir yelpazedeki problemler için de kullanılabilir.

Umarım, merakını yakaladım. Landsberg ve Manivel'in bu makalesini okuyarak daha ileri gidebilirsiniz:

http://arxiv.org/abs/math/0601097

This Bu yazım hatasını düzeltmeyeceğim, çünkü üşüttüm.


21 çarpma ile (3x3) bir matris ürünü yapabilmenin asimptotik olarak daha hızlı bir algoritmaya yol açacağını göstermek oldukça basittir. Bunun mümkün / imkansız / bilinmeyen bir fikri var mı?
gnasher729

3

Bunu ödev için yapmakla görevlendirildim ve düzgün bir epifani olduğunu düşündüm: Strassen'in algoritması, "daha derin" ön toplama bileşenleri karşılığında daha az işlem kullanmak için ön toplama bileşenlerinin "genişliğini" feda ediyor yine de son cevabı çıkarmak için kullanılabilir. (Bunu söylemenin en iyi yolu bu değil, ama açıklamak benim için zor).

" İşlemler ve bileşenler " dengesini göstermek için iki karmaşık sayıyı bir araya getirme örneğini kullanacağım :

Karmaşık sayılar için denklem.

4 çarpım kullandığımıza dikkat edin, bu da 4 ürün bileşeni ile sonuçlanır :

4 ürün bileşenimiz var.

İstediğimiz 2 son bileşenin: karmaşık sayının gerçek ve hayali kısımlarının aslında doğrusal denklemler olduğuna dikkat edin: bunlar ölçekli ürünlerin toplamlarıdır. Burada iki işlemle uğraşıyoruz: toplama ve çarpma.

Gerçek şu ki, 4 ürün bileşenimiz sadece bileşenlerimizi ekler veya çıkarırsak 2 nihai bileşenimizi temsil edebilir :

Ürün bileşenlerimiz nihai bileşenlerimizi temsil edebilir.

Ancak, son 2 bileşenimiz ürün toplamı olarak temsil edilebilir . İşte ben geldim:

Aslında sadece 3 ayrı ürün bileşenine ihtiyacımız var.

Görebiliyorsanız, son ikimizi oluşturmak için aslında sadece 3 ayrı ürün bileşenine ihtiyacımız var :

3 farklı bileşenimiz.

Fakat bekle! Büyük harflerin her biri kendi ürünlerinde! Ancak yakalama, (a + b) (c + d) 'den (1 + çarpma) (A + B + C + D) üretebileceğimizi biliyoruz.

Sonuçta algoritmamız, daha az toplama işlemi için çarpma miktarını alıp sattığımız daha az, ancak "daha şişman" bileşenler kullanacak şekilde optimize edilmiştir.

Bunu sağlayan şeyin bir kısmı, A (B + C) 'nin (AB + AC) ile eşdeğer olmasını sağlayan dağıtım özelliğidir. Birincisinin 1 toplama ve 1 çarpma işlemi kullanılarak nasıl hesaplanabileceğine dikkat edin, ikincisi 2 çarpma ve 1 toplam gerektirir.

Strassen'in algoritması , daha fazla hedef ürün terimi ve bu terimleri elde etmek için kullanabileceğimiz daha fazla ürün bileşeni olması dışında, karmaşık sayıdaki ürünlere uyguladığımız optimizasyonun bir uzantısıdır. 2x2'lik bir matris için Strassen'in algoritması, 8 çarpma gerektiren bir algoritmayı 7 çarpma gerektiren bir algoritmaya dönüştürür ve iki çarpmayı bir işlemde "birleştirmek" için dağıtım özelliğini kullanır ve bunun yerine bir tane çıkarmak için yeni "daha şişman" düğümden uzaklaşır ürün terimi veya diğeri, vb.

İyi bir örnek: (-1) ve (2) ve (5) elde etmek için bunu (-1), (2), (5) olarak düşünebilir veya (2-3) olarak düşünebilirsiniz. ), (2), (2 + 3). İkinci işlemler ise daha az farklı sayılar kullanır. Yakalama, farklı sayıların sayısının, matris çarpımı için hesaplamanız gereken ürün bileşenlerinin sayısına eşit olmasıdır. Bunun için, dağıtım özelliği aracılığıyla farklı bir varyasyon kullanarak izomorfik çıktılardan yararlanan temel operasyonların belirli bir görünümünü bulmak için bunu optimize ediyoruz.

Belki de bu bir şekilde topolojiye bağlanabilir mi? Bu benim layman'ımın bunu anlama şekli.

Düzenleme: İşte benim karmaşık sayı açıklama yapma sürecinde çizdi benim notlar bir resim:

Karmaşık sayı bölümünü bulmak için bazı notlar.

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.