Taşma emniyetli toplama


13

Verilen am varsayalım (bunlar genişliğinin bir kayıt uygun, yani tam sayılar en, sabit ağırlık ) bir 1 , bir 2 , ... bir n , örneğin bunların toplamı olduğu bir 1 + , bir 2 + + bir N = S bir kayıt da uyan genişlik w .nwa1,a2,ana1+a2++an=Sw

Bana öyle geliyor ki, sayıları her zaman verebiliriz , böylece her önek toplamı S i = b 1 + b 2 + + b i de w genişliğine sahip bir kayda sığar .b1,b2,bnSi=b1+b2++biw

Temel olarak, motivasyon toplamını hesaplamak için tam sayı herhangi bir ara aşamada taşmaları düşünmek zorunda kalmadan sabit genişlik yazmaç makinelerde.S=Sn

Böyle bir permütasyon bulmak için hızlı (tercihen doğrusal zaman) algoritması var mı ( bir girdi dizisi olarak verildiğini varsayarak )? (veya böyle bir permütasyonun mevcut olmadığını söyleyin).ai


3
Takip: Özetle taşmayı algılama - tipik işlemci özelliklerini dikkate alan daha hızlı bir yöntem var mı?
Gilles 'SO- kötü olmayı kes'

1
Sadece ikinin tamamlayıcı kayıtlarını kullanın ve toplayın. Ortada taşsa bile, ön koşulunuz taşmaların iptal edileceğini ve sonucun doğru olacağını garanti eder. : P
KodlarChaos

@CodeInChaos: Bu gerçekten doğru mu?
Aryabhata

1
Bence de. Sen aslında aralarından kanonik gösterimi seçim bir grup modulo 2 ^ n çalışıyorsanız -2^(n-1)için 2^(n-1)-1. Elbette ki ikisinin tamamlayıcısı ve iyi tanımlanmış taşma davranışı gerektirir, ancak C # gibi bir dilde çalışmalıdır.
CodesInChaos

2n

Yanıtlar:


10


0

Algoritma

  1. a1,,anPM
  2. Sum=0
  3. Her iki liste de boş değilken
  4.       Sum>0Sum:=Sum+head(M)M:=tail(M)
  5.       Sum:=Sum+head(P)P:=tail(P)
  6. S

Doğruluk
Doğruluk, sayılar listesinin uzunluğuna dair basit bir endüktif argüman kullanılarak oluşturulabilir.

a1,,an

SumSum=0Sum>0SumSumSum0SumSum

Şimdi, ilk sonuç uygulanabilir ve bunlar birlikte toplamın asla sınırların dışına çıkmadığını kanıtlamak için yeterlidir.


0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.