Yeni Başlayanlar İçin 13 İlginç Veri Yapısı Proje Fikirleri ve Konuları [222]

Yayınlanan: 2021-01-03

Bilgisayar bilimi dünyasında, veri yapısı, veri değerleri koleksiyonunu, bunların ilişkilerini ve verilere uygulanabilecek işlevleri içeren formatı ifade eder. Veri yapıları, belirli algoritmalarla daha etkin bir şekilde erişilebilmesi ve üzerinde çalışılabilmesi için verileri düzenler. Bu makalede, öğrenmenize, oluşturmanıza ve yenilik yapmanıza yardımcı olacak bazı yararlı veri yapısı projelerini listeleyeceğiz!

İçindekiler

Veri Yapısı Temelleri

Veri yapıları aşağıdaki temel türlere ayrılabilir:

  • diziler
  • Bağlantılı Listeler
  • Yığınlar
  • Kuyruklar
  • ağaçlar
  • Hash tabloları
  • grafikler

Verileriniz için uygun ayarı seçmek, programlama ve problem çözme sürecinin ayrılmaz bir parçasıdır. Ve somut uygulamalarda veri yapılarının soyut veri türlerini düzenlediğini gözlemleyebilirsiniz. Bu sonuca ulaşmak için sıralama, arama vb. gibi çeşitli algoritmalardan yararlanırlar. Veri yapılarını öğrenmek, veri bilimi derslerinin önemli kısımlarından biridir.

Büyük veri ve analitiğin yükselişiyle birlikte, bu temel bilgileri öğrenmek, veri bilimcileri için neredeyse gerekli hale geldi. Eğitim , gerçek yaşam deneyimlerinden elde edilen bilgilerin sentezini sağlamak için tipik olarak çeşitli veri yapısı projelerini içerir. İşte başlamanıza yardımcı olacak konuların bir listesi!

Veri Yapıları Proje Fikirleri

1. Belirsiz ikili arama ağaçları

Adlar, numaralar vb. öğeler, ikili arama ağaçları veya BST'ler adı verilen sıralı bir düzende bellekte saklanabilir. Ve bu veri yapılarından bazıları, isteğe bağlı öğeler eklendiğinde veya silindiğinde yüksekliklerini otomatik olarak dengeleyebilir. Bu nedenle, kendi kendini dengeleyen BST'ler olarak bilinirler. Ayrıca, BTrees, AVL ağaçları ve kırmızı-siyah ağaçlar gibi bu türün farklı uygulamaları olabilir. Ancak, öğrenebileceğiniz daha az bilinen birçok infaz var. Bazı örnekler arasında AA ağaçları, 2-3 ağaç, yaylı ağaçlar, günah keçisi ağaçları ve treaplar sayılabilir.

Projenizi bu alternatiflere dayandırabilir ve farklı senaryolarda yaygın olarak kullanılan diğer BST'lerden nasıl daha iyi performans gösterebileceklerini keşfedebilirsiniz. Örneğin, yayvan ağaçlar, ciddi zamansal yerellik koşulları altında kırmızı-siyah ağaçlardan daha hızlı kanıtlayabilir.

2. Memoization algoritmasını takip eden BST'ler

Dinamik programlama ile ilgili not alma. İndirgeme-bellekleme BST'lerinde, her düğüm kendi alt ağaçlarının bir fonksiyonunu not alabilir. Yaşlarına göre sıralanmış kişilerin BST örneğini düşünün. Şimdi, alt düğümlerin her bireyin maksimum gelirini saklamasına izin verin. Bu yapı ile “18.3 ile 25.3 yaş arasındaki kişilerin maksimum geliri ne kadardır?” gibi sorulara cevap verebilirsiniz. Güncellemeleri logaritmik zamanda da işleyebilir.

Ayrıca, bu tür veri yapılarının C dilinde gerçekleştirilmesi kolaydır. Ayrıca Ruby ve uygun bir API ile bağlamayı deneyebilirsiniz. 'lambda'yı sipariş işleviniz ve alt ağaç notlandırma işleviniz olarak belirlemenize izin veren bir arabirim seçin. Sonuç olarak, kısa not tutan BST'lerin, bir dizi ek defter tutma ile kendi kendini dengeleyen BST'ler olmasını bekleyebilirsiniz.

Ödeme: İkili Ağaç Türleri

3. Yığın yerleştirme süresi

Veri yapısı projeleri ararken , yaratıcı yaklaşımlarla çözülen farklı problemlerle karşılaşmak istersiniz. Böyle benzersiz bir araştırma sorusu, ikili yığın veri yapıları için ortalama vaka ekleme süresiyle ilgilidir. Bazı çevrimiçi kaynaklara göre sabit zaman, bazıları ise log(n) zamanı olduğunu ima eder.

Ancak Bollobas ve Simon, “Öncelik sırasına tekrarlanan rastgele ekleme” başlıklı makalelerinde sayısal olarak desteklenen bir yanıt veriyor. İlk olarak, boş bir yığına n tane eleman eklemek istediğiniz bir senaryo varsayarlar. 'n' olabilir! aynısı için olası siparişler. Ardından, ekleme süresinin 1,7645 sabitine bağlı olduğunu kanıtlamak için ortalama maliyet yaklaşımını benimserler.

4. Öncelik değiştiren parametrelerle en uygun treaps

Treap'ler, BST'lerin ve yığınların bir birleşimidir. Bu rastgele veri yapıları, düğümlere belirli önceliklerin atanmasını içerir. Farklı ayarlar altında bir dizi parametreyi optimize eden bir projeye gidebilirsiniz. Örneğin, diğerlerinden daha sık erişilen düğümler için daha yüksek tercihler belirleyebilirsiniz. Burada, her erişim iki aşamalı bir süreci başlatacaktır:

  • Rastgele bir sayı seçme
  • Önceki öncelikten daha yüksek olduğu tespit edilirse, düğümün önceliğini bu numarayla değiştirmek

Bu değişikliğin bir sonucu olarak, ağaç rastgele şeklini kaybedecektir. Sık erişilen düğümlerin artık ağacın köküne yakın olması ve dolayısıyla daha hızlı arama yapılması muhtemeldir. Bu nedenle, bu veri yapısıyla denemeler yapın ve argümanınızı kanıtlara dayandırmaya çalışın.

Projenin sonunda, ya özgün bir keşif yapabilir ya da düğümün önceliğini değiştirmenin çok fazla hız sağlamadığı sonucuna varabilirsiniz. Bununla birlikte, ilgili ve faydalı bir egzersiz olacaktır.

5. kd ağaçları üzerinde araştırma projesi

K boyutlu ağaçlar veya kd ağaçları, mekansal verileri düzenler ve temsil eder. Bu veri yapılarının, özellikle en yakın komşu ve menzil aramaları gibi çok boyutlu anahtar aramalarında çeşitli uygulamaları vardır. İşte kd ağaçları nasıl çalışır:

  • İkili ağacın her yaprak düğümü k boyutlu bir noktadır.
  • Her yaprak olmayan düğüm, hiper düzlemi (bu boyuta dik olan) iki yarım alana böler.
  • Belirli bir düğümün sol alt ağacı, hiper düzlemin solundaki noktaları temsil eder. Benzer şekilde, o düğümün sağ alt ağacı, sağ yarıdaki noktaları gösterir.

Bir adım daha ileri gidebilir ve her yaprak düğümün kökten aynı uzaklığa sahip olacağı kendi kendini dengeleyen bir kd ağacı oluşturabilirsiniz. Ayrıca, bu tür dengeli ağaçların belirli bir uygulama türü için en uygun olup olmadığını öğrenmek için test edebilirsiniz.

Bununla, çalışabileceğiniz, araştırabileceğiniz ve deneyebileceğiniz beş ilginç fikri ele aldık. Şimdi veri yapıları ve algoritmalar üzerine birkaç projeye daha bakalım .

Okuyun: Hindistan'da Veri Bilimcisi Maaşı

6. Knight'ın sancıları

Bu projede, eylem halindeki iki algoritmayı anlayacağız – BFS ve DFS. BFS, Genişlik-İlk Arama anlamına gelir ve en kısa yolu bulmak için Kuyruk veri yapısını kullanır. Oysa DFS, Derinlik-İlk Arama anlamına gelir ve Yığın veri yapılarını geçer.

Yeni başlayanlar için ikili ağaçlara benzer bir veri yapısına ihtiyacınız olacak. Şimdi, standart bir 8 X 8 satranç tahtanız olduğunu ve bir oyunda şövalyenin hareketlerini göstermek istediğinizi varsayalım. Bildiğiniz gibi, bir şövalyenin satrançtaki temel hareketi iki ileri ve bir yan adımdır. Herhangi bir yöne baktığında ve yeterli dönüş yapıldığında, tahtadaki herhangi bir kareden başka bir kareye geçebilir.

Şövalyenizin iki boyutlu bir kurulumda bir kareden (veya düğümden) diğerine hareket etmesinin en basit yolunu bilmek istiyorsanız, önce aşağıdaki gibi bir fonksiyon oluşturmanız gerekecektir.

  • knight_plays([0,0], [1,2]) == [[0,0], [1,2]]
  • knight_plays([0,0], [3,3]) == [[0,0], [1,2], [3,3]]
  • knight_plays([3,3], [0,0]) == [[3,3], [1,2], [0,0]]

Ayrıca, bu proje aşağıdaki görevleri gerektirecektir:

  • Bir masa oyunu ve bir gece için bir senaryo oluşturma
  • Şövalyenin olası tüm hareketlerini ağaç yapısında çocuklar olarak ele almak
  • Herhangi bir hareketin tahtadan çıkmamasını sağlamak
  • Bu durumda en kısa yolu bulmak için bir arama algoritması seçme
  • Başlangıç ​​karesinden bitiş karesine mümkün olan en iyi hareketi bulmak için uygun arama algoritmasını uygulamak.

7. C dışı sistem dillerinde hızlı veri yapıları

Programcılar genellikle Ruby veya Python gibi yüksek seviyeli dilleri kullanarak programları hızlı bir şekilde oluştururlar, ancak veri yapılarını C/C++'da uygularlar. Ve öğeleri bağlamak için bir bağlayıcı kod oluştururlar. Ancak, C dilinin hataya açık olduğuna inanılıyor ve bu da güvenlik sorunlarına neden olabilir. Burada heyecan verici bir proje fikri yatıyor.

Rust veya Go gibi modern bir düşük seviyeli dilde bir veri yapısı uygulayabilir ve ardından kodunuzu yüksek seviyeli dile bağlayabilirsiniz. Bu proje ile yeni bir şey deneyebilir ve ayrıca ciltlemelerin nasıl çalıştığını anlayabilirsiniz. Çabalarınız başarılı olursa, gelecekte benzer bir alıştırma yapmak için başkalarına ilham verebilir ve veri yapılarının daha iyi performans odaklı olmasını sağlayabilirsiniz.

Ayrıca okuyun: Yeni Başlayanlar için Veri Bilimi Proje Fikirleri

8. Veri yapıları için arama motoru

Yazılım, belirli bir API için veri yapılarının seçimini otomatikleştirmeyi ve hızlandırmayı amaçlar. Bu proje, yalnızca farklı veri yapılarını temsil etmenin yeni yollarını göstermekle kalmaz, aynı zamanda bunlar üzerinde çıkarımı donatmak için bir dizi işlevi optimize eder. Özetini aşağıda derledik.

  • Veri yapısı arama motoru projesi, veri yapıları ve farklı yöntemler arasındaki ilişkiler hakkında bilgi gerektirir.
  • Tüm yöntemler için olası her bir bileşik veri yapısı tarafından geçen süreyi hesaplar.
  • Son olarak, belirli bir durum için en iyi veri yapılarını seçer.

Okuyun: Veri Madenciliği Proje Fikirleri

9. Çift bağlantılı listeler kullanan telefon rehberi uygulaması

Bu proje, iletişim defteri uygulamalarının çalışmasını gösterebilir ve ayrıca size diziler, bağlantılı listeler, yığınlar ve kuyruklar gibi veri yapıları hakkında bilgi verebilir. Tipik olarak, telefon rehberi yönetimi, arama, sıralama ve silme işlemlerini kapsar. Buradaki arama sorgularının ayırt edici bir özelliği, kullanıcının her karakteri girdikten sonra kişi listesinden önerileri görmesidir. Ücretsiz olarak sunulan projelerin kaynak kodunu okuyabilir ve becerilerinizi geliştirmek için aynısını çoğaltabilirsiniz.

10. Dörtlü ağaçlarla uzamsal indeksleme

Dörtlü ağaç veri yapısı, düz bir 2-B uzayını tekrarlı olarak dört çeyreğe bölebilen özel bir ağaç yapısı türüdür. Bu ağaç yapısındaki her hiyerarşik düğümün ya sıfır ya da dört çocuğu vardır. Seyrek veri depolama, görüntü işleme ve uzamsal indeksleme gibi çeşitli amaçlar için kullanılabilir.

Mekansal indeksleme, jeo-uzaysal uygulama tasarımının önemli bir parçasını oluşturan seçili geometrik sorguların verimli bir şekilde yürütülmesi ile ilgilidir. Örneğin, Ola ve Uber gibi araç paylaşım uygulamaları, taksilerin konumunu izlemek ve kullanıcılara güncellemeler sağlamak için coğrafi sorguları işler. Facebook'un Yakındaki Arkadaşlar özelliği de benzer işlevlere sahiptir. Burada, ilişkili meta veriler tablolar şeklinde depolanır ve nesne koordinatlarıyla ayrı ayrı bir uzaysal dizin oluşturulur. Problemin amacı, verilen bir noktaya en yakın noktayı bulmaktır.

Haritalama, şehir planlaması ve ulaşım planlamasından afet yönetimine ve hafifletmeye kadar çok çeşitli alanlarda dörtlü veri yapısı projelerini takip edebilirsiniz . Problem çözme ve analitik becerilerinizi beslemek için kısa bir taslak sağladık.

Amaç: Aşağıdaki işlemleri sağlayan bir veri yapısı oluşturmak

  • Konum veya geometrik boşluk ekleme
  • Belirli bir konumun koordinatlarını arayın
  • Belirli bir bitişik alandaki veri yapısındaki konumların sayısını sayın

11. Veri yapılarında grafik tabanlı projeler

Bir grafiğin topolojik sıralamasına ilişkin bir projeye başlayabilirsiniz. Bunun için, DFS algoritması hakkında önceden bilgi sahibi olmanız gerekir. İşte iki yaklaşım arasındaki temel fark:

  • Bir tepe noktası yazdırırız ve ardından DFS'deki bitişik köşeler için algoritmayı yinelemeli olarak çağırırız.
  • Topolojik sıralamada, önce bitişik köşeler için algoritmayı özyinelemeli olarak çağırırız. Ardından, içeriği yazdırmak için bir yığına itiyoruz.

Bu nedenle, topolojik sıralama algoritması, bir dizi düğümü döndürmek için yönlendirilmiş bir döngüsel olmayan grafik veya DAG alır.

Bir gözleme tarifi sipariş etmenin basit örneğini ele alalım. Krep yapmak için yumurta, süt, un veya gözleme karışımı, yağ, şurup vb. gibi belirli bir dizi malzemeye ihtiyacınız vardır. Miktar ve porsiyonlarla birlikte bu bilgiler bir grafikte kolayca gösterilebilir.

Ancak bu malzemeleri kullanmanın kesin sırasını bilmek de aynı derecede önemlidir. Burası topolojik sıralamayı uygulayabileceğiniz yerdir. Diğer örnekler, yazılım projeleri için veritabanı sorgularını ve çizelgelerini optimize etmek için öncelik çizelgeleri yapmayı içerir. Referansınız için sürece genel bir bakış:

  • Köşelerin bitiş zamanlarını hesaplamak için grafik veri yapısı için DFS algoritmasını çağırın
  • Köşeleri azalan bir bitiş zamanı sırasına sahip bir listede saklayın
  • Sıralı listeyi döndürmek için topolojik sıralamayı yürütün

12. Rastgele erişim listeleriyle sayısal gösterimler

Geçmişte gördüğümüz temsillerde, sayısal elemanlar genellikle Binom Yığınlarında tutulur. Ancak bu modeller, diğer veri yapılarında da uygulanabilir. Okasaki, ikili rastgele erişim listelerini kullanarak sayısal bir temsil tekniği geliştirdi. Bu listelerin birçok avantajı vardır:

  • Baştan ekleme ve kaldırmayı sağlarlar
  • Belirli bir dizinde erişime ve güncellemeye izin verirler

Daha fazlasını öğrenin: R'de En Sık Kullanılan Altı Veri Yapısı

13. Yığın tabanlı metin düzenleyici

Normal metin düzenleyiciniz, metin yazılırken veya düzenlenirken düzenleme ve saklama işlevine sahiptir. Yani, imleç konumunda birden çok değişiklik var. Yüksek verimlilik elde etmek için ekleme ve değiştirme için hızlı bir veri yapısına ihtiyacımız var. Sıradan karakter dizilerinin de dizileri depolaması zaman alır.

Bu sorunları çözmek için boşluk arabellekleri ve ipler gibi diğer veri yapılarıyla denemeler yapabilirsiniz. Nihai hedefiniz, daha küçük bitişik bellek alanı kaplayarak normal dizelerden daha hızlı birleştirme elde etmek olacaktır.

Çözüm

Veri yapısı becerileri, özellikle günümüzün dijital ekosisteminde büyük veri kümelerinin yönetilmesi söz konusu olduğunda, yazılım geliştirmenin temelini oluşturur. Adobe, Amazon ve Google gibi önde gelen şirketler, veri yapısı ve algoritma alanında çeşitli kazançlı iş pozisyonları için işe alıyor. Ve mülakatlarda, işe alım uzmanları sadece teorik bilginizi değil, aynı zamanda pratik becerilerinizi de test eder. Bu nedenle, ayağınızı kapıya sokmak için yukarıdaki veri yapısı projelerini uygulayın!

Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulmuş ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk, 1 Endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

Veri yapıları derken neyi kastediyorsunuz?

Verileri depolamak için kullanılan belirli kap türleri vardır. Bu kapsayıcılar veri yapılarından başka bir şey değildir. Bu kaplar, içlerinde depolanan verileri depolamak, düzenlemek ve işlemek için kullanılan, kendileriyle ilişkili farklı özelliklere sahiptir.
Verileri nasıl tahsis ettiklerine bağlı olarak iki tür veri yapısı olabilir. Diziler ve bağlantılı listeler gibi doğrusal veri yapıları ve ağaçlar ve grafikler gibi dinamik veri yapıları.

Doğrusal ve doğrusal olmayan veri yapıları arasındaki fark nedir?

Doğrusal veri yapılarında, her öğe bir sonraki ve önceki öğelere referansla birbirine doğrusal olarak bağlanırken, doğrusal olmayan veri yapılarında veriler doğrusal olmayan veya hiyerarşik bir şekilde bağlanır.
Doğrusal bir veri yapısı uygulamak, yalnızca tek bir seviye içerdiğinden, doğrusal olmayan bir veri yapısından çok daha kolaydır. Hafıza açısından bakarsak, o zaman doğrusal olmayan veri yapıları, hafızayı akıllıca tükettikleri ve boşa harcamadıkları için muadillerinden daha iyidir.

Hangi gerçek hayat uygulamaları veya projeleri veri yapılarına dayanmaktadır?

Çevrenizdeki her yerde veri yapılarına dayalı uygulamaları görebilirsiniz. google maps uygulaması grafiklere dayalıdır, çağrı merkezi sistemleri kuyrukları kullanır, dosya gezgini uygulamaları ağaçlara dayanır ve hatta her gün kullandığınız metin düzenleyicisi yığın veri yapısına dayanır ve bu liste uzayabilir.
Sadece uygulamalar değil, birçok popüler algoritma da bu veri yapılarına dayanmaktadır. Böyle bir örnek karar ağaçlarıdır. Google arama, şaşırtıcı otomatik tamamlama özelliğini arama çubuğunda uygulamak için ağaçları kullanır.