Stirling Zahlen berechnen
Die folgende Funktion berechnet rekursiv die Stirling-Zahlen erster Art. Diese werden zur Berechnung der Anzahl unterschiedlicher Permutationen mit n Elementen in r Zykeln verwendet (Mehr Info: http://de.wikipedia.org/wiki/Stirling-Zahl)
Delphi-Quellcode:
Die Stirling-Zahlen zweiter Art beschreiben die Anzahl Anzahl der unterschiedlichen Möglichkeiten aus einer Menge mit n Elementen r nichtleere, disjunkte Teilmengen zu bilden.
function Stirling1(n, r: integer): integer;
begin if ((n = 0) and (r = 0)) or (n = r) then begin Result := 1; Exit; end; if ((n > 0) and (r = 0)) or ((n = 0) and (r > 0)) then begin Result := 0; Exit; end; Result := Stirling1(n - 1, r - 1) + (n - 1) * Stirling1(n - 1, r); end;
Delphi-Quellcode:
Leider habe ich nur eine Definition der Stirling-Zahlen gefunden, die eine nicht-lineare Variante zur rekursiven Berechnung ermöglicht, sodass der Rechenaufwand mit großen Zahlen exponentiell steigt.
function Stirling2(n, r: integer): integer;
begin if ((n = 0) and (r = 0)) or (n = r) then begin Result := 1; Exit; end; if ((n > 0) and (r = 0)) or ((n = 0) and (r > 0)) then begin Result := 0; Exit; end; Result := Stirling2(n-1,r-1)+r*Stirling2(n-1,r); end; Stichwörter: Diskrete Strukturen Mengen Permutation Kombinatorik Rekursion [edit=fkerber]Kleinen Fehler ausgebessert. Mfg, fkerber[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz