Notice: Undefined variable: ub in /home/ictrclub/blog_ictr/wp-content/plugins/advanced-page-visit-counter/public/class-advanced-page-visit-counter-public.php on line 148

Notice: Undefined variable: ub in /home/ictrclub/blog_ictr/wp-content/plugins/advanced-page-visit-counter/public/class-advanced-page-visit-counter-public.php on line 160
answer set programming nedir - Blog

answer set programming nedir

Ziyaretci:21267

ANSWER SET PROGRAMMİNG

Programlama paradigmaları hakkında konuşmadan önce 3 sene önce sizlere fonksiyonel programlama hakkında ufak bir blog yazmıştım.

https://blog.ictr.club/lambda-calculus/

Şimdi ise sizlerle beraber declarative ve asp(answer set programming) hakkında konuşacağız.

Literatürde belki 26 dan farklı programlama paradigması ve alt paradigmaları mevcut bunların hepsini layıkı ile bilmeye şansımız çok az.Zaten en çok imperative(object oriented vb) ,declarative( fonksiyonel programlama vb) bu 2 ve alt paradigmaları kullanılmaktadır.Sorunlarınıza bağlı olarak günün sonunda yeni paradigmalar öğreniyorsunuz.

İMPERATİVE VE DECLARATİVE PROGRAMLAMA

İlk olarak 2 programlama paradigmasını sizlere tanıtıp örneklendirmeliyim.

Imperative programlama: bir bilgisayar programının nasıl çalıştığını adım adım belirttiğimiz yukardan aşağı programladığımız,satır satır kod yazdığımız en temel programlama paradigmasıdır.

Declarative programlama:bir bilgisayar programının nasıl çalıştığını adım adım belirtmek yerine, bir hedefin veya sonucun ne olduğunu tanımlayan bir programlama paradigmasıdır.

Bir örnek ile açıklayalım.Bir dizi oluşturalım ve bunları toplayacak basit bir program yazalım.

Imperative programlama örneği

yukarıda görüldüğü gibi her bir dizi elemanını total adındaki değişken ile sıra ile topluyoruz

Declative programlama örneği

 

Declarative programlamada ise sadece reduce fonksiyonunu kullanarak günün sonunda döngüydü değişkendi uğraşmadan dizilerimizdeki sayıları topladık.

LOGİC PROGRAMLAMA

Logic programlama ise declarative bir programlamanın bir alt paradigmasıdır burada ise semanti kmodeller ,kurallar ve sorgular ile çalışıyoruz.Aşağıya doğru gittikçe  detaylı şekilde sizlere izah edeceğim.

 

ASP (Answer set programming)

Neyin ne olduğunu nereden türediğini sizlere açıkladıktan sonra kuru fasülyenin faydalarına geçebiliriz.İlk olarak sizlere sembolik mantığı anlatmam gerekli fakat bu konuyu araştıran birisi zaten mantıksal önermeleri ve kümeleri bildiği için atlıyorum.

NE TİP SORUNLARDA ÇALIŞIR

Optimizasyon ,çıkarsama planlama ve sıralama sorunlarında kullanılabilir.Belli tiplerdeki problemler için fayda sağlar.Örneğin bir gegin satıcı probleminde veya bir yargı (suçlu-suçsuz şeklinde bir karar mekanizması için) sorunu için kullanılabilir .Aşağıdaki örnekler size bir fikir sağlayacaktır.

https://potassco.org/clingo/run/

ASP WORKFLOW

Bu tip programlarda

1.problem belirlenir .

2.mantık şemaları oluşturulur

3.bu şemalar üzerinden model oluşturulup sorunumuzun çözümü hazırlanır.

ALGORİTMASI/ÇALIŞMA BİÇİMİ

Kurallarımız  (head(X) :- body(X).) şeklinde çalışır yada fonksiyon(X) :- obje (X). şeklinde düşünebiliriz.

% işareti ile yorum satırı yazabiliyoruz.

LOGİC PROGRAMLAMA Örneği

Yukarıdaki örneğimizi  logic programlama ile programlayalım.

gördüğünüz gibi aynı örneği prolog ile hazırladık.Aşağıdaki link üzerinden çalıştırabilirsiniz

https://onecompiler.com/prolog/3ztsxcspc

Giriş seviyesinde bir yazı oldu eğer devamını isterseniz yorumlarda belirtmeniz yeterli olacaktır.Herkese iyi çalışmalar

Kaynakça

  1. https://github.com/topics/answer-set-programming
  2. https://www.youtube.com/watch?v=PXk3xYbmy_s
  3. https://towardsdatascience.com/knowledge-representation-and-reasoning-with-answer-set-programming-376e3113a421
  4. https://www.benjaminjohnston.com.au/pythonasp
  5. https://www.youtube.com/watch?v=V-y17OOEhpQ&list=PL7DBaibuDD9PeXzX7mExyVADcMU9b8eJ1&index=5
  6. https://mehmetkose.com.tr/blog/declarative-imperative-farki/
  7. https://bilgisayarkavramlari.com/2009/11/16/emirli-programlama-imperative-programming/
  8. https://www.educative.io/blog/declarative-vs-imperative-programming
  9. https://potassco.org/doc/start/
  10. https://wp.doc.ic.ac.uk/arusso/wp-content/uploads/sites/47/2015/01/clingo_guide.pdf

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir