Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Delphi Stirling Zahlen berechnen (https://www.delphipraxis.net/125561-stirling-zahlen-berechnen.html)

Codewalker 8. Dez 2008 15:24


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:
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;
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.

Delphi-Quellcode:
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;
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.

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