Ev Kişisel Finans Algoritmik İşlevler ile çalışma - mankenler

Algoritmik İşlevler ile çalışma - mankenler

Video: Algoritma Ve Programlama Mantığı & Yeni Başlayanlar 2024

Video: Algoritma Ve Programlama Mantığı & Yeni Başlayanlar 2024
Anonim

Matematikteki bir işlev, bazı girdileri bir yanıtla eşleştirmenin basit bir yoludur. Farklı bir şekilde ifade edilen bir işlevi, girdinizi bir cevap haline getiren (haritalandıran) bir dönüşümdür (matematik işlemlerine dayalıdır).

Bazı girdi değerleri (genellikle x veya n harfleriyle gösterilir) için, fonksiyonu tanımlayan matematiğe karşılık gelen bir cevabınız vardır. Örneğin, f (n) = 2 n gibi bir işlev, girişiniz n, sayı olduğunda n sayısının 2 ile çarpımıdır.

Girişin boyutunu kullanmak, bunun zaman açısından kritik bir yaş olduğu ve insanların hayatlarının gittikçe artan bir miktarda veriyle sıkıştığı göz önüne alındığında mantıklı geliyor. Her şeyi matematiksel bir işlev yapmak biraz daha sezgisel, ancak bir algoritmanın aldığı verinin miktarıyla çözümünü nasıl ilişkilendirdiğini açıklayan bir işlev, belirli donanım veya yazılım desteği olmadan analiz edebileceğiniz bir şeydir. Sorununuzun büyüklüğü göz önüne alındığında, diğer çözümlerle karşılaştırmak da kolaydır. Algoritmaların analizi gerçekten zihin bulan bir kavramdır çünkü karmaşık bir dizi basamağı bir matematik formüle indirgemektedir.

Dahası, çoğu zaman, algoritmaların bir analizi bile fonksiyonu tam olarak tanımlamakla ilgilenmiyor. Gerçekten yapmak istediğiniz şey, bir hedef işlevin başka bir işlevle karşılaştırılmasıdır. Bu karşılaştırma işlevleri, hedef algoritma ile karşılaştırıldığında zayıf performans sergileyen önerilen işlevler dizisinde görülür. Bu sayede, sayıları daha büyük veya daha az karmaşıklığa sahip fonksiyonlara eklemek zorunda kalmazsınız; Bunun yerine basit, premade ve iyi bilinen işlevleri ele alırsınız. Kaba gibi gelebilir, ancak daha etkili ve kesin bir performans ölçümü elde etmek yerine, algoritmaların performansını kategorilere sınıflandırmaya benzer.

Genelleştirilmiş işlevler kümesine Büyük O gösterimi denir ve sıklıkla bu küçük işlev kümesiyle karşılaşırsınız (parantez içine alınır ve başına bir O >) algoritmaların performansını göstermek için kullanılır. Şekilde bir algoritmanın analizi gösterilmektedir. Kartezyen koordinat sistemi, yatay (x koordinatı) girdinin boyutu ve ordinat (y koordinatı) olduğu RAM simülasyonuyla ölçülen işlevini temsil edebilir sonuçlanan işlem sayısı. Üç eğri temsil ettiğini görebilirsiniz. Girdi boyutu önemlidir. Bununla birlikte, kalite de önemlidir (örneğin, sorun siparişi verirken, neredeyse emredilen bir girdiyi sipariş etmek daha hızlıdır).Sonuç olarak analiz, en kötü durum, f 1 (n), ortalama bir vaka, f 2 (n) ve en iyi vaka, f 3 (n). Ortalama bir vaka size genel bir fikir verebilir, ancak gerçekten önem verdiğiniz şey en kötü durumdur, çünkü algoritmanız bir çözüm bulmaya çalışırken problemler ortaya çıkabilir. Big O işlevi, belli bir

n0 değerinden (büyük girdi kabul etmek için eşik değeri) sonra, her zaman aynı girdi verilen daha büyük sayıdaki operasyonlara en kötü durum fonksiyonu olan 'dan daha fazla sonuç verir > f1 . Böylece, Big O işlevi algoritmanınızı temsil eden iştahtan daha kötümser olur, böylece girdi kalitesi olursa olsun, işlerin bundan daha kötü olamayacağından emin olabilirsiniz. En iyi, ortalama ve en kötü girdi durumunda bir algoritmanın karmaşıklığı. Birçok olası işlev daha kötü sonuçlar doğurabilir ancak kullanabileceğiniz Big O gösterimi tarafından sunulan işlevlerin seçimi kısıtlıdır, çünkü amacı bir standart önererek karmaşıklık ölçümünü basitleştirmektir. Sonuç olarak, bu bölüm Big O notasyonunun bir parçası olan sadece birkaç fonksiyonu içermektedir. Aşağıdaki liste artan karmaşıklık derecesinde şunları açıklamaktadır:

Sabit karmaşıklık O (1):

Aynı anda, ne kadar çok girdi sağlamak olursa olsun. Sonunda, girilen verinin ne kadar uzun olursa olsun, sabit bir sayıdaki işlemdir. Bu karmaşıklık seviyesi uygulamada oldukça nadirdir.

  • Logaritmik karmaşıklık O (log n): İşlemlerin sayısı girdiden daha yavaş büyür ve algoritmayı küçük girdilerle daha az verimli, daha büyük olanlarla daha verimli hale getirir. Bu sınıfın tipik bir algoritması ikili aramadır.
  • Doğrusal karmaşıklık O (n): İşlemler girişle 1: 1 oranında büyür. Tipik bir algoritma, girişi bir kez taradığınızda ve onun her bir öğesine bir işlem uyguladığınızda tekrarlama işlemidir.
  • Linearitmik karmaşıklık O (n log n): Karmaşıklık, logaritmik ve doğrusal karmaşıklık arasındaki bir karışımı ifade eder. Mergesort, Heapsort ve Quicksort gibi verileri sipariş etmek için kullanılan bazı akıllı algoritmalara özgüdür.
  • İkinci dereceden karmaşıklık O (n 2
  • ): İşlemler, girdi sayısının karesi kadar büyür. Başka yinelemelerde (bilgisayar biliminde iç içe geçmiş yinelemeler) tek bir iterasyona sahipseniz, ikinci derece karmaşıklığa sahipsinizdir. Örneğin, bir isim listesi var ve en benzer olanları bulmak için her ismi diğer tüm isimlerle karşılaştırıyorsunuz. Bazı daha az etkili sipariş algoritmaları böyle karmaşıklığı sunar: kabarcık sıralama, seçim sıralama ve ekleme sıralama. Bu karmaşıklık düzeyi, algoritmalarınızın bir çözüm bulmadan önce saatlerce hatta günler sürebilir anlamına gelir. Kübik karmaşıklık O (n 3
  • ): İşlemler karesel karmaşıklığa göre daha hızlı büyür, çünkü şimdi birden çok iç içe geçmiş yinelemeye sahipsiniz. Bir algoritma bu karmaşıklık derecesine sahipse ve az miktarda veri (100, 000 öğe) işlemek zorunda kalırsanız, algoritma yıllarca çalışabilir.Girişin gücü olan bir dizi işlemi yaptığınızda, algoritmaya polinom zamanında çalışan 'a bakın. Üstel karmaşıklık O (2 n
  • ): Algoritma, eklenen her yeni öğe için önceki işlemlerin iki katı sayı alır. Bir algoritma bu karmaşıklığa sahip olduğunda, küçük sorunlar bile sonsuza kadar sürebilir. Kapsamlı aramalar yapan birçok algoritmanın üstel karmaşıklığı vardır. Bununla birlikte, bu karmaşıklık seviyesi için klasik örnek Fibonacci sayılarının hesaplanmasıdır. Faktöriyel karmaşıklık O (n!): Elementler arasındaki olası kombinasyonların çokluğu nedeniyle gerçek karmaşık bir kabus. Düşünüyorsanız: Girişiniz 100 nesneyse ve bilgisayarınızdaki bir işlem 10 999 -6 -6999 saniyedir (günümüzde her bilgisayar için makul bir hız), yaklaşık 10
  • 140 yılına ihtiyaç duyarsanız görevi başarıyla tamamlamak için (evrenin yaşının 10 14 yıl olduğu tahmin edilemez bir zaman süresi). Ünlü bir faktöryal karmaşıklık problemi, bir satış elemanının pek çok şehri ziyaret etmek ve başlangıç ​​şehrine geri dönmek için en kısa güzergahı bulması gereken seyyar satıcı meselesidir.
Algoritmik İşlevler ile çalışma - mankenler

Editörün Seçimi

Ile Web Sunucusunda Drupal Yükleme Softaculous ile Bir Web Sunucusuna Drupal Yükleme

Ile Web Sunucusunda Drupal Yükleme Softaculous ile Bir Web Sunucusuna Drupal Yükleme

Birçok web barındırma şirketi, Fantastico veya Softaculous adlı programları kullanarak kolay Drupal kurulumu. Barındırma şirketiniz Softaculous'u kullanıyorsa, işte böyle çalışır. Drupal topluluğu, Softaculous veya Fantastico gibi üçüncü parti yazılımlarla Drupal'ın yüklenmesini önermez. Bunu yapmak, yükseltmeyi zorlaştırabilir ve veritabanlarınızdaki sorunlara potansiyel olarak neden olabilir ...

Drupal Bahçe Site Kullanıcılarını Yönetme - mankenler

Drupal Bahçe Site Kullanıcılarını Yönetme - mankenler

Drupal Gardens'daki People sayfası, kullanıcıları, düzenli bir Drupal kurulumunda olurdunuz. Kullanıcıları bulabilir, rolleri engelleyebilir ve engelini kaldırabilir, silebilir ve atayabilirsiniz. Kullanıcıları yönetmek için Kişiler bağlantısını tıklayın. Liste sekmesi varolan kullanıcıları bulmanıza yardımcı olur ve İzinler sekmesi rolleri oluşturmanıza izin verir ve ...

Drupal kurulumu: Yazılım Alma - mankenler

Drupal kurulumu: Yazılım Alma - mankenler

Web barındırıcınız Fantastico veya Softaculous kullanmıyorsa, ilk Drupal'ı yüklemek için adım Drupal'ın en son sürümünün bir kopyasını alıyor ve web sunucunuza taşıyor. Paketi indirmek Drupal yazılımının kopyasını almak özgür ve kolaydır. Şu adımları izleyin: Drupal'a göz atın. org ve tıklayın ...

Editörün Seçimi

OAuth Kodlarını Android Uygulamanızla Twitter Sunucusuyla Görüşecek - aumlalar

OAuth Kodlarını Android Uygulamanızla Twitter Sunucusuyla Görüşecek - aumlalar

Android uygulamanızın Twitter sunucularıyla iletişim kurması için kendi OAuth kodlarınıza ihtiyacınız var. Onları almak için, aşağıda listelenen basit adımları uygulayın ve kendi Twitter uygulamasını geliştirmeye gideceksiniz. Twitter, herhangi bir zamanda önceden bildirimde bulunmaksızın web sitesinin tasarımını değiştirebilir. Twitter'da oturum açın ...

Xcode Kaynak Düzenleyici ile Başlarken - mankenler

Xcode Kaynak Düzenleyici ile Başlarken - mankenler

Yazarken kullandığınız ana araç bir iPad uygulaması için kod, Proje gezgini içinde bir kaynak kodu dosyası seçtikten sonra Xcode Çalışma Alanı penceresinin sağ tarafındaki Düzenleyici alanında Standart düzenleyici bölmesi olarak görünen Xcode kaynak editörüdür. Ayrıca Asistan editörü gibi görünür ...

Editörün Seçimi

App'unuzu Geliştirmek İçin Android Animasyon Nasıl Kullanılır

App'unuzu Geliştirmek İçin Android Animasyon Nasıl Kullanılır

Android uygulamanızda biraz süslü animasyona ihtiyacımız var. Bu, umut veren bir hırsı gösteriyor! Android, uygulamanızın geliştirilmesinde kullanabileceğiniz iki tür animasyona sahiptir: Animasyonu görüntüle: Bu listede açıklandığı üzere ya arayı doldurarak veya kare kare animasyonla canlandırdığınız eski bir sistem: Arası doldurma: ...

IPad Uygulamalarınızda Çerçeveler Nasıl Kullanılır - AYDINLATMALAR

IPad Uygulamalarınızda Çerçeveler Nasıl Kullanılır - AYDINLATMALAR

Genel işlevsellik. IPad için iPhone OS, uygulamalarınıza teknolojileri, hizmetleri ve özellikleri dahil etmek için bir dizi çerçeve sunmaktadır. Örneğin, UIKit çerçevesi, uygulamanızda kullanabileceğiniz destek olayları, çizim desteği, pencereler, görünümler ve denetimler sağlar. Bir çerçeve, aşağıdakileri yapmak üzere tasarlanmıştır ...