Algoritmul Burnickel-Ziegler

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 19 iunie 2020; verificările necesită 4 modificări .

Algoritmul Burnickel-Ziegler ( germană:  Burnikel-Ziegler-Verfahren ) este un algoritm pentru împărțirea numerelor întregi mari , descris de Christoph Burnickel și Joachim Ziegler în 1998 [1] , care vă permite să calculați eficient atât câtul cât și restul diviziunii .

Miezul metodei îl reprezintă algoritmii și , care împart numerele cu lungimi , , , . Algoritmii se apelează reciproc recursiv, fiecare pas reducând lungimea numărătorului cu 1/4 și respectiv 1/3 [1] . Algoritmul , printre altele, efectuează înmulțirea, astfel încât performanța acestuia poate fi mărită folosind metode rapide de înmulțire .

Dacă în calcule se utilizează un algoritm, a cărui complexitate de calcul este , de exemplu, algoritmul Karatsuba sau Toom-Cook , atunci complexitatea algoritmului Burnickel-Ziegler va fi, de asemenea, . Dacă calculul folosește metoda de înmulțire Schönhage-Strassen cu , atunci complexitatea diviziunii va fi [1] :11

În practică, algoritmul este mai rapid decât diviziunea lungă și algoritmul lui Barrett pentru numere al căror număr de zecimale se află între aproximativ 250 și 1,5 milioane [1] :22 .

Folosit în multe biblioteci software standard, cum ar fi Java versiunea 8 [2] și GMP [3] .

Note

  1. 1 2 3 4 Christoph Burnikel; Joachim Ziegler. Divizia  recursiva rapidă . Max-Planck-Institut für Informatik (octombrie 1998). Data accesului: 27 iunie 2014. Arhivat din original pe 3 decembrie 2013.
  2. JDK-8014319: Împărțirea mai rapidă a  numerelor întregi mari . Oracolul . Data accesului: 27 iunie 2014. Arhivat din original pe 3 decembrie 2013.
  3. Divizia Împărțiți și Cuceriți  . gmplib.org. Data accesului: 27 iunie 2014. Arhivat din original pe 5 decembrie 2013.