it-swarm.dev

Algoritmaları ve veri yapılarını nasıl öğrenirim?

Bu önceki sorum sorduğum yerde algoritmaları ve veri yapılarını öğrenmek gerekli. Evet hissediyorum.

Şimdi deneyerek ya da pratik olarak ya da herhangi bir ödevle öğrenme fırsatını elde edemeyeceğim bir ortamda çalışıyorum. Algoritmalar ve veri yapılarını öğrenmek için altı ay ya da bir ya da iki yıl verebileceğim doğru kitaplar, doğru tür problemler, doğru tür kaynaklar gibi doğru yaklaşım nedir? Ve ayrıca zihnimi problemleri veri yapıları ve algoritmalarla ilişkilendirebilecek şekilde şekillendirin.

38
sushil bharwani

Okuma.

Hayır, gerçekten oku.

Bulabileceğiniz algoritma ve tasarım hakkında her şeyi okuyun. Orada olağanüstü kitaplar var. Sedgewick algoritma kitapları iyidir. Skiena'nın Algoritma Tasarım El Kitabı da iyidir. Bu kitaplar hep birlikte gittiğim her işte, Mythical Man-Month ile birlikte her kitap rafında beni takip ediyor.

O zaman sorun.

Saygı duyduğunuz insanlarla konuşun. Onlara hangi karar noktalarına sahip olduklarını ve neden aldıkları kararları verdiklerini sorun. İyi olanlar her zaman size "X yapmayı seçtim çünkü bu şekilde A, B'den daha iyi. C ile gidebilirdim, ama bunun daha iyi bir seçim olduğunu hissettim" diyebilir.

Sonra yap.

Bir şeyler oluşturun. Asla kullanmayacağınız şeyler oluşturun. Asla ihtiyacınız olmayacak şeyler oluşturun. Sudoku bulmacasını çözen bir program yaz. Şimdi tekrar yap. Ve yeniden. Tamamen farklı 5 yol oluşturun. Sudoku bulmacaları üreten bir program oluşturun ve çözücülere besleyin. Hangi çözücünün en hızlı olduğunu bulun. Ve sonra...

Nedenini öğrenin.

"Ne" neredeyse hiçbir zaman önemli değildir. Yani, evet, eldeki projeyi bitirmek kritik öneme sahip, ama sonunda "neden" i bilmeden "ne" yi biliyorsanız, o zaman ilk etapta hiç yapmamış olabilirsiniz. Özgeçmişinizde bir kurşun noktası var. Git bir kurabiye al ve kendini tebrik et. "Neden", "ne" den çok daha önemlidir.

Ve kayıt için Sudoku bir örnekti. Kongregate'teki bir ton mantık bulmacasıyla bu egzersizi yapmak için çok fazla boş zaman geçirdim ve yolda çok şey öğrendim.

http://www.Amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/http://www.Amazon.com/Algorithm-Tasarım -Manuel-Steven-Skiena/dp/1848000693 /http://www.Amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/

40
Hounshell

Algoritmalar

On iki yaşındayken bir grup ortamında sihirli dersler aldım. Sihirbazın adı Joe Carota'ydı. Bir kez hile yaptı ve ben de "Bunu nasıl yaptın?" O gün o zamandan beri bana yapışmış bir şey söyledi.

Joe'nun yanıtı, "Michael, eğer bu hile nasıl yapıldığını gerçekten bilmek istiyorsan, bunu nasıl yapacağını bulmalısın."

Tabii ki duymak istediğim şey bu değildi ama zihnimi problem çözme üzerine yoğunlaştırdı. Bu benim açımdan problem çözme idi. Sorunu çözmek için ilk denemem on yedi adım attıysa ve gerçekten klunky ise, iyi haber sorunu çözdüm.

Daha sonra geliştirdiğim çözüme bakarak ve bu çözümü geliştirmenin yollarını arayarak nihai sonucu nasıl aktaracağımı öğrenirdim. Daha sonra bilgisayar programlama hayatımda bu sürecin "Kademeli Arıtma" olarak adlandırıldığını öğrendim. Sanırım bugün buna yeniden düzenleme diyorlar.

İşe yaradı o zaman hala çalışıyor.

burada aşağıdaki bağlantı sizi DS takip ettiğim en başarılı MIT ve Algoritmalar sınıflarından birine yönlendirir.

http://academicearth.org/courses/introduction-to-algorithms

Umarım bu video serisinden keyif alırsınız. İyi şanslar !!!

9
Tharindu Rusira

Çevrimiçi bir kurs alıp alamayacağınıza veya özel ders alıp alamayacağınıza bakın. Başarısız, bu hızlı bir google aramasında ortaya çıktı. Geçen baharda bir ders aldım (ilk olarak, EE'den yazılıma geçtim) ve almak çok zor değildi işaretçileri iyi anlarsanız .

2
Stephen Furlani

Bu konuda bir ders alamıyorsanız, Algoritma Tasarım Kılavuzu'nu tavsiye ederim. Ücretsiz bir PDF burada var, ancak profesyonel olarak programlamayı planlıyorsanız gerçek kitabı almaya değer.

2
Jason Baker

Örneğin küre çevrimiçi gibi klasik problemleri çözmek için çalışmaya başlayın, site bu kadar süslü görünmeyebilir, ancak çocuk, bunlar günümüzde kullanılan önemli veri yapılarının ve algoritmalarının çoğunu gerektiren klasik programlama problemleridir.

Çözümler, C/C++ 'dan JavaScript, LISP, Smalltalk, Assembly + + 40'a kadar çeşitli programlama dillerinde gönderilebilir. Böylece, problemi rahat hissettiğiniz programlama diliyle çözmeye odaklanabilirsiniz.

1
Ernelli

CLRS

Bu benim en sevdiğim kaynak. Lisans bilgisayar bilimi algoritmaları dersimde kullandım ve 4 yıl sonra M.S.'ye hazırlanmak için tek başına okumak üzere kitabı satın aldım. Comp Sci kursları. Herhangi bir yolla kolay bir okuma değildir, ancak sunulan matematik/kanıtlardan bazılarını anlamaya çalışır ve daha sonra sözde kodu en sevdiğiniz dilde/dillerde uygularsanız, biraz iri fiyat etiketine değer. Diğerlerinin bahsettiği Algoritma Tasarım Kılavuzu da problem tanımlamayı öğrenmek için harika bir kaynaktır, ancak CLRS'nin saf ayrıntılar için daha iyi olduğunu gördüm.

1
Kurtis

Veri yapıları ve algoritmalarda lisans düzeyinde bir kursa kaydolmaya çalışın, bu kavramları diğerlerinin yanı sıra öğrenmek her zaman iyidir.

1
Martijn Verburg

Her zaman böyle bir şey deneyebilirsiniz: http://codekata.pragprog.com/

Okumak yerine düşünerek hep daha iyi öğrendim. Bununla birlikte, cevap aramak için belgeleriniz/okuma materyalleriniz olmalıdır.

0
RobotHumans

Bunu satın al book , Buna ödünç ver ya da Çal! Gerisi takip edecek :)

Rivest ve Cormen tarafından Algoritmalara Giriş. Girişteki Mergesort'un açıklamasını geçtikten sonra başlangıçta takip etmek çok zor olacaktır. Her şey size güzelce açılıyor.

Ayrıca kitapta verilen sorunları çözerseniz daha da iyi olursunuz. Mezuniyet okulundan mezun olduktan sonra bile kitaptan ayrılmak istemedim. O kadar iyi.

0
Venki