Cumartesi, Kasım 03, 2007

Matematiksel Programlamada Indeksler

Matematiksel programlamanın en zor taraflarından biri bence, indekslerin neye karşılık geldiğini hatırlamak. i, j, n, m bir sürü değişken var.

i malzemelere karşılık gelir, j çantalara, n çantaların sayısıdır, m malzemelerin sayısıdır. İyi güzel... Şimdi bir de bunları formüllerde kullanalım: i üzerinden topla (sum over i), bütün x_ij'lerin toplamı 1 olmalıdır. Bu denklem tüm j'ler için yazılır. Hmm, ne güzel. matematik yapmak yerine, i ve j'leri düşünüyoruz. Zaten matematiğin mantıksal ilişkilerini anlamak için zihnimizi bayağı uğraştırmamız gerekiyordu, şimdi bir de i ve j'lerin karma karışıklığı ortaya çıktı.

Neden şöyle yapmıyoruz: ç çantalara karşılık gelsin, m malzemelere karşılık gelsin. n_ç çantaların sayısı, n_m malzemelerin sayısı olsun. Şimdi bir malzeme bir çantaya atanmış olmalı, öyleyse her bir m (malzeme için): tüm ç'lerin üzerinden x_çm'leri topla = 1 olsun. Anlaşılması çok daha kolay...

Neden anlamlı indeksler kullanmak yararlı olsun?

Çünkü bir problem üzerine hızlı bir şekilde düşünebilmek gerekiyor. Düşünme süreci akıcı olmalı, pürüzler düşünmeyi engellememeli. Bu yüzden değişkenlerin isimleri üzerinde işlem yapmak gerekmemeli.

Hiç yorum yok: