Bazı varsayımsal, idealleştirilmiş ağ kullanımını modellemek için ne tür bir veri yapısı kullanılacağını anlamaya çalışıyorum.
Benim senaryomda, birbirlerine düşman olan bazı kullanıcılar, tüm potansiyel bağlantıların bilindiği bilgisayar ağları oluşturmaya çalışıyor. Ancak bir kullanıcının bağlanması gereken bilgisayarlar, başka bir kullanıcının bağlanması gereken bilgisayarlarla aynı olmayabilir; 1 numaralı kullanıcının A, B ve D bilgisayarlarını bağlaması gerekebilir, 2 numaralı kullanıcının B, C ve E bilgisayarlarını bağlaması gerekebilir.
NCTM Graph Creator yardımıyla oluşturulan görüntü
Bunun çekirdeği, bilgisayarları temsil eden düğümler ve Ethernet kablolarını temsil eden kenarlar ile yönlendirilmemiş bir döngüsel grafik olacak. Ancak, senaryonun doğası gereği, bitişiklik listelerini ve bitişiklik matrislerini (en azından önemsiz değişiklikler olmadan) dışlayan birkaç nadir özellik vardır:
- kenarlar sınırlı kullanıma dönüşebilir; yani, bir kullanıcı belirli bir ağ bağlantısı edinirse, başka hiçbir kullanıcı bu bağlantıyı kullanamaz
- örnekte, yeşil kullanıcı A bilgisayarına bağlanamaz, ancak kırmızı kullanıcı aralarında doğrudan bir bağlantı olmamasına rağmen B'yi E'ye bağladı
- bazı durumlarda, belirli bir düğüm çifti birden fazla kenarla bağlanır
- örnekte, D'den E'ye çalışan iki bağımsız kablo vardır, bu nedenle yeşil ve mavi kullanıcıların her ikisi de bu makineleri doğrudan bağlayabilir; ancak kırmızı artık böyle bir bağlantı kuramaz
- iki bilgisayar birden fazla kabloyla bağlıysa, her kullanıcı bu kablolardan birden fazlasına sahip olmayabilir
Bu grafik üzerinde birkaç işlem yapmam gerekecek, örneğin:
- belirli bir kullanıcı için belirli bir bilgisayar çiftinin bağlı olup olmadığını belirleme
- belirli bir kullanıcının hedef bilgisayarları bağlaması için en uygun yolu belirleme
- belirli bir kullanıcı için en yüksek gecikmeli bilgisayar bağlantısını belirleme (yani dallanma olmadan en uzun yol)
İlk düşüncem, tüm kenarların bir koleksiyonunu oluşturmaktı, ancak bu arama için korkunç. Şimdi düşünebileceğim en iyi şey, listedeki her öğenin sadece kenar uzunluğunu değil, aynı zamanda maliyetini ve mevcut sahibini de içerecek şekilde bir bitişiklik listesini değiştirmektir. Bu mantıklı bir yaklaşım mı? Alanın bir endişe kaynağı olmadığı varsayıldığında, tek bir grafik yerine grafiğin birden fazla kopyası (her kullanıcı için bir tane) oluşturmak mantıklı olur mu?