DE1499282A1 - Anordnung zum Erzeugen von Permutationen - Google Patents

Anordnung zum Erzeugen von Permutationen

Info

Publication number
DE1499282A1
DE1499282A1 DE19651499282 DE1499282A DE1499282A1 DE 1499282 A1 DE1499282 A1 DE 1499282A1 DE 19651499282 DE19651499282 DE 19651499282 DE 1499282 A DE1499282 A DE 1499282A DE 1499282 A1 DE1499282 A1 DE 1499282A1
Authority
DE
Germany
Prior art keywords
subgroup
input
memory
permutations
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE19651499282
Other languages
English (en)
Inventor
Goldstein Alan Jay
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
Western Electric Co Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Electric Co Inc filed Critical Western Electric Co Inc
Publication of DE1499282A1 publication Critical patent/DE1499282A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/766Generation of all possible permutations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Train Traffic Observation, Control, And Security (AREA)

Description

Western Electric Company Incorporated P 14 99 282.6
195 Broadway Goldstein 1 (W 39 945)
New York, N. Y. 10007 USA 1 4 9 S 2 8 2
Anordnung zum Erzeugen von Permutationen
Die Erfindung bezieht sich auf digitale Rechenanordnungen, insbesondere auf Schaltungsanordnungen zum Erzeugen jeder der möglichen Folgen oder Permutationen einer Gruppe von Eingangsziffern oder -Signalen.
Die Möglichkeit, automatisch Permutationen einer Gruppe von Eingangsziffern zu erzeugen, ist in verschiedenen Situationen von Bedeutung, zum Beispiel beim automatischen Prüfen der Stromkreise eines Schaltungsnetzwerkes, ebenso bei kommerziellen Rechenproblemen, zum Beispiel bei dem "Problem des reisenden Vertreters". Dieses Problem besteht darin, die kürzeste Route zu finden, die jede Stadt einer feststehenden Gruppe von N Städten, die durch die Zeichen 0, 1 ... N identifiziert sind, berühren. Die bekannten Versuche zur Lösung dieses Problems haben aber Systeme erfordert, bei denen große Speicherkapazität und lange Rechenzeiten erforderlich waren.
Die erfindungsgemäße Lösung umfaßt die Verwendung von Schaltungen, die. eine Eingangsliste von N Signalen in getrennte Untergruppen ( die im Hinblick auf optimale Wirksamkeit von etwa gleicher Größe sein sollten ) unterteilen, ferner einen Schaltungsaufbau, der, auf jede Unterteilung der Eingangs-
009817/1498
o-n (Art. 7 & l Abs. 2 IJr. l Sau 3 des Änderungsflao. v. 4.
14S-9282
größen ansprechend eine Mehrzahl Permutationen der in einer ersten Untergruppe gelegenen Elemente erzeugt, und einen Schaltungsaufbau, der, auf jede Permutation der Elemente der ersten Untergruppe ansprechend, eine Mehrzahl Permutationen der in einer zweiten Untergruppe gelegenen Elemente erzeugt.
Bei einem Ausfuhrungsbeispiel wird zum Speichern einer Gruppe Eingangsziffem ein Operand-Speicher verwendet, sowie eine Mehrzahl Signale, die die relative Lage oder Reihenfolge der Ziffern in der Eingangsliste steuern ; diese Signale werden nachstehend Austauschzeichen ( interchange characters ) genannt. Beim Ausführungsbeispiel wird ebenfalls ein Schaltungsaufbau verwendet, der aufeinanderfolgend nebeneinanderliegende der gespeicherten Eingangsziffem entsprechend den Austauschzeichen austauscht.
Allgemein gesprochen wird zum systematischen und automatischen Erzeugen der Permutationen der Ziffern einer Liste eine Struktur vorgesehen, die die Ziffernliste in getrennte Untergruppen unterteilt und die Eingangsziffem durch iteratives Durchlaufen ineinandergeschachtelter ( nested ) Rechenschleifen permutiert.
Vorteilhafterweise ist die erforderliche Speicherkapazität bei Verwendung der Erfindungsprinzipien effektiv unabhängig von der Größe der Eingangsliste. Femer können als Folge der Unterteilung der Information die Permutationen schneller erzeugt werden.
008817/1AdI
Im folgenden ist die Erfindung anhand der Zeichnungen beschrieben; es zeigen
Figuren IA und IB die linke bzw. rechte Hälfte des Blockschaltbilds einer erfindungsgemäß ausgeführten Permutations-erzeugenden Anordnung;
Figur 2 ein Diagramm zur Darstellung des Informationsspeichermusters, das einen Operand-Speicher, der in Figur IB vorgesehen ist, kennzeichnet; und
Figur 3 ein Signalflußdiagramm zur Darstellung der funktioneilen Arbeitsweise der perrnutationenerzeugenden Anordnung nach den Figuren IA und IB,
In den Figuren IA und IB, nachfolgend kurz mit Figur 1 bezeichnet, ist eine illustrative permutationenerzeugende Anordnung dargestellt, die alle möglichen Reihenfolgen einer Gruppe von N EingangsobjekteV erzeugt. Die Anordnung weist ein Akkumulator- ( AC ) Register 15 und ein MQ-Register 16 auf, die je mit einem Operand-Digitalinformationsspeicher 20 verbunden sind.
Die Information wird in den Speicher 20 über eine Eingangs-Ausgangs-Uberwachungseinheit 18 eingelesen, und zwar ansprechend auf Betätigungssignale, die dieser Einheit von zwei Einlesesteuereinheiten 30 und 31 zugeführt werden, sowie auf die Über eine Eingangs leitung 24 zugefuhrte Eingangsinformation, Zusätzlich wird digitale Information zwischen AC und MQ- Register 15 und 16 und dem Operand-Speicher 20 unter der Steuerung einer Speicherzugriffs-
Q09817/U96
INSPECTED
-4- 1423282
einheit 17 Überfragen oder umgesetzt. Die jeweilige von der Speicherzugriffseinheit 17 aktivierte Speicherstelle hängt ihrerseits von der im Einzelfall aktivierten Einheit einer Mehrzahl Speichererregungssteuereinheiten 33-40 ab, die in Verbindung mit drei Indexregistern A, B, C wirksam sind« Mit anderen Worten, die Steuereinheiten 33 bis 40, die in Verbindung mit den Indexregistern A, B und C wirksam sind, steuern die Speicherzugriffseinheit 17, die ihrerseits die Umsetzung der Information zwischen den AC- und MQ-Registern 15 und 16 und dem Operandspeicher 20 steuert. Die Einheiten 33 und 50 sind im wesentlichen identisch und nur die letztere ist im Detail in Fig. 1 dargestellt. Der einzige nennenswerte Unterschied hierzwischen ist der, daß die Einheit 33 in Verbindung mit dem Indexregister C wirksam ist, und die Einheit 50 mit dem Indexregister A. Ferner sind die beiden Steuereinheiten 33 und 36 funktionell dahingehend wirksam, digitale Informationen vom AC-Register 15 zum Indexregister B zu Übertragen.
Ein Operationszähler 12 dient zum aufeinanderfolgenden Aktivieren der Systemsteuereinheiten 30-44 in der normalen Reihenfolge von oben nach unten. Der Operationszähler 12 kann vorteilhafterweise einen fünfstufigen Binärzähler und eine hieran angeschlossene Impulsverteilerschaltung besitzen, so daß eine ausgewählte Steuereinheit aktiviert wird, wenn die im Zähler vorhandene digitale Zählung der binären Steuernummer entspricht, die an den Steuereinheit-Eingangsleiter in Figur 1 angeschrieben ist. Jedesmal wenn eine bestimmte Steuereinheit durch den Operationszähler aktiviert wird, nimmt die
0 09817/ UÖ8
Zählung des Zählers 12 um eins zu, so daß die folgende Steuereinheit als nächste aktiviert werden kann. Zusätzlich sind drei PrUfsteuereinheiten 42-44 zu dem Zweck selektiv betätigbar, den Operationszähler 12 auf die Digitalzustände 01011,00100 bzw. 00010 einzustellen, so daß die Steuereinheiten 35, 33 und 32 als nächste vom Zähler 12 aktiviert werden.
An dieser Stelle erscheint es zweckmäßig, das Arbeiten der Schaltung zu betrachten, wie es durch jede der Steuereinheiten 33-44 bewirkt wird. Es sei angenommen, daß jede der Permutation einer Über die Eingangsleitung 24 zugeführten Liste von N-Ziffern erzeugt werden soll. Die Eingang-Einlesesteuereinheit 30, die vom Operationszähler 12 als erste aktiviert wird, ist in Verbindung mit der Eingangs-Ausgangs-Überwachungseinheit 18 dahingehend wirksam, die N-Ziffern in digitaler Form in N diskrete Adressenstellen des Operand-Speichers 20 einzuspeichern. Die als nächste vom Operationszähler 12 aktivierte Einheit, nämlich die Austauschzeichen-Einlesesteuereinheit 3I7 dient zusammen mit der Eingang-Ausgang-Überwachungseinheit 18 dazu, eine ebenfalls Ober die Eingangsieitung 24 zugefuhrte Mehrzahl Austauschzeichen in eine Mehrzahl aufeinanderfolgender Speicherstellen einzuspeichern, die unmittelbar einer Adressenstelle ICHNGE des Speichers 20 vorangehen. Die Adressenstelle ICHNGE ist in Figur 2, die den Speicher 20 zeigt, dargestellt. Die Anzahl und im Einzelfall vorhandene Natur dieser Zeichen wird nachstehend noch im einzelnen beschrieben werden. Es sei bemerkt, daß die Steuereinheiten 30 und 31 ausschließlich dazu vorgesehen sind, den Operand-Spei-
009817/1461
6" 14SS282
eher 20 anzusteuern und daß diese Anordnungen durch den Operationszähler 12 nur einmal während des Erzeugungsprozesses sämtlicher der gewünschten Permutationen aktiviert werden.
Die Unterteiiungserzeugungs-Steuereinheit 32 bewirkt die Unterteilung der N Eingangsobjekte in zwei getrennte Untergruppen S, und S- , die die gleiche oder nahezu die gleiche Anzahl Elemente enthalten. Nachfolgend sei angenommen, daß jede der Untergruppen S, und S- aus N/2 Elementen besteht. Jedesmal wenn die Unterteilungserzeugungs-Steuereinheit 32 durch den Operationszähler 12 aktiviert wird, wird sie dahingehend wirksam, eine neue Unterteilung der N Eingangsobjekte in zwei Untergruppen S, und S-zu erzeugen, die je N/2 Elemente aufweisen und diese Untergruppen in zwei Speicherlisten einzuspeichern, die je N/2 Stellen aufweisen, die ihrerseits direkt den Speicheradressen S, und S_ des Speichers 20 ( Fig. 20) folgen. Das heißt, die Elemente der abgeteilten Untergruppe S, liegen beispielsweise in den Speicherstellen S, + 1, S. + 2...S. + N/2. Die Steuereinheit 32 kann vorteilhafterweise eine Vielzweckrechenmaschine sein, bei der irgendeines der allgemein bekannten Rechenschemata zum Unterteilen einer Objektgruppe verwendet wird. In diesem Falle würde für {ede Unterteilung der N-Elemente die Steuereinheit 32 einfach die N-Elemente aus dem Operandspeicher 20 auslesen, die gewünschte Unterteilung ausfuhren und dann die N-E lernen te in den Operandspeicher 20 zurück in der neu unterteilten Anordnung einschreiben. Alternativ hierzu kann die Einheit 32 eine Speicheran-
009817/149*
_7_ 14SS282
N I Ordnung aufweisen, die speziell sämtliche der Li exi-
(N/2) J . (N/2) I stierenden verschiedenen Unterteilungen der N Eingangsobjekte einschließt.
In diesem Falle würde zu Beginn jedes Permutationsprozesses die Steueretn-
N I
heit 32 jede der ' ■— verschiedenen Unterteilungen er-
(N/2) I . (N/2) j
zeugen und diese in einem Speicher jeweils so lange /υ speichern wie sie im
Permutationsprozeß benötigt werden. Beachte, daß der Ausdruck ,J 1,
(N/2) I . (N/2) j die Zahl der Kombinationen der von N entnommenen N/2 Ziffern darstellt, also die Anzahl verschiedener Wege, auf denen N Ziffern in zwei Gruppen zu je N/2 Ziffern unterteilt werden können. Dieses ist allgemein aus der Kombinatorik bekannt.
Die die zusammengesetzte Untergruppe S. permutierende Steuereinheit 33 ist funktionell dafür ausgelegt, jede der möglichen Reihenfolgen der Untergruppe S. jedesmal zu erzeugen, wenn eine neue Unterteilung der N Eingangsgrößen durch die Unterteilungserzeugung-Steuereinheit 32 bewirkt wird. In ähnlicher Weise erzeugt die die zusammengesetzte S„ Untergruppe permutierende Steuereinheit 50 jede der Reihenfolgen der Untergruppe S„ jedesmal, wenn eine neue Permutation der Untergruppe S. von der zusammengesetzten Steuereinheit 33 erzeugt wird.
Im Hinblick auf die grundsätzliche Theorie, auf der die die Untergruppen permutierenden Steuereinheiten 33 und 50 beruhen, wurde gefunden, daß für jede geordnete Gruppe von k Größen eine Gruppe von kl Austausch-
009817/U88
zeichen existiert, die dazu benutzt werden können die k| Permutationen der k Größen entsprechend der nachstehenden Prozedur zu bezeichnen oder zu erzeugen. Jedes Austauschzeichen weist eine Zahl α mit 1^a 4*k-l auf, worin ein bestimmter Wert von α einen Austausch des α-ten und (a+l)-ten der geordneten Elemente der Gruppe diktiert. Besteht beispielsweise eine Gruppe aus den geordneten ( ode red ) Elementen 1,2,3 und A1 dann würden die Austauschzeichen lf3 und 2 je die permutierten Gruppen 2,1,3 und 4; 2,1, 4 und 3; bzw, 2,4, 1 und 3 bezeichnen oder erzeugen. Allgemein gilt für eine Gruppe aus k+1 Elementen, daß die ( k+1 ) J Austauschzeichen a, (j), 0<^ j ^ (k+1) I -1 aus folgenden Rekursionsformeln erzeugt werden können :
(1 wenn j ungeradzahlig ist, ( 1 )
a (j) = (2 sonst; und
k wenn j*=0 oder k|
I / ΓΗ \
QW ak((k-l)|l fe. J + k-j*J wenn j«ik| (2)
ak('k-"if k
und zwar für k^>3, mit α (χ) = α (x+rj), k*= kj + (k-1) |, und mit j*= j - k (mod k*) derart, daß O^ j*k* ist und&ldie größte, χ nicht überschreitende ganze Zahl bedeutet. In der in Gleichung (2) verwendeten Terminologie wird a, . (j) dahingehend interpretiert, daß es das j-te Austauschzeichen einer k+1 Elemente besitzenden Austauschzeichen-Gruppe bedeutet,
0 0 981771468
ORlGiNAL INSPECTED
-9- 14SS282
Wie vorstehend erwähnt, erzeugen die die zusammengesetzten Untergruppen
permutierenden Steuereinheiten 33 und 50 die Permutationen der Untergruppen S, beziehungsweise S„, von denen jede N/2 verschiedene Elemente besitzt. Demgemäß sind N/2I positive Austauschzeichen aQ bis α/κι/<2\ ι ι einer Größe von N/2 - 1 oder weniger erforderlich. Daher ist die vorstehend erwähnte Austauschzeicheneinlesesteuereinheit 31 dahingehend wirksam, die N/2 I Zeichen in die N/2 j Speicheradressen einzuschreiben, die der Adressenstelle ICHNGE ( Figur 2 ) vorangehen.
Die besondere Art und Weise auf die aufeinanderfolgende Permutationen der Untergruppen S. und S„ erzeugt werden, kann durch Betrachten der der Gruppe S_ zugeordneten Steuereinheiten 34 bis 40 verstanden werden. Während der ersten Aktivierung der gesamten Einheit 50 spricht die LX (N/2) I - A zum Beschicken ( tojoad) des Index-Registers A mit der Digitalzahl (N/2)j an. Diese Zahl könnte entweder der Steuereinheit 34 über die Leitung 24 zugeführt oder von der Steuereinheit aus der über die Leitung 24 erhaltenen Information errechnet werden. Die CLA-IC-A-Steuereinheit 35, die dann durch den Operationszähler 12 aktiviert wird, macht (clears) den Akkumulator 15 frei und addiert hierau den Inhalt einer Adresse des Operandspeichers 20, die der Stelle ICHNGE weniger einer Speicherstellenzahl entspricht, die gleich der im Indexregister A vorhandenen digitalen ganzen Zahl ist. Da das Register A anfänglich die Zahl (N/2) I enthält, ist die Steuereinheit 35 dafür ausgelegt, den Inhalt der Speicheradresse d_
009817/1490
10" 1429282
( Fig. 2), die um (N/2) | Speicherstellen hinter der Adresse ICHNGE liegt, in den Akkumulator 15 einzugeben. Das in der Adresse dg gespeicherte Digitalwort ist das erste Element-Austauschzeichen a , und demgemäß wird diese Zahl im AC-Register 15 Platz nehmen.
Die nächstfolgende PNA-B Steuereinheit 36 dient zum plazieren des negativen Wertes der im Akkumulator 15 vorhandenen Zahl, nämlich -ao, in das Indexregister B. Die CLA-S- -B Steuereinheit 37 spricht dann zum Freimachen ( to clear) des Akkumulators 15 und zum hierzu erfolgenden Addieren des Inhaltes einer Speicheradresse an, die den Stellen S„ minus einer Adressenzahl entspricht, die gleich der im Indexregister IJ vorhandenen Zahl ist. Da das Register B die Digitalzahl -aQ enthält, wird die an der Adresse S„+ao des Operandspeichers 20 vorhandene Eingangsgröße, nämlich das aQ-te Element der Untergruppe S_, in das Akkumulatorregister 15 placiert. In ähnlicher Weise ist die LDQ-S2 + 1-B Steuereinheit 38 wirksam zum Beschicken ( rojoad) des MQ Registers 16 mit dem Inhalt einer Speicheradresse die der Stelle So + 1 minus der im Indexregister B vorhandenen ganzen Zahl entspricht. Diese Adresse, nämlich S„ + 1 - (a^ = S« + ( aQ + 1 ), enthält das (aQ + l)-te Element der Untergruppe S—
Die folgende STO-S- + 1 - B Steuereinheit 39 dient zum Speichern ( to store ) des Inhaltes des AC-Registers 15, in diesem Fall das a -te Element der Untergruppe Sn, unter einer Adresse im Speicher 20, die der Stelle S-+ 1 minus dem
009817/1491 oocpted
5NSPECTED
Inhalt des Indexregisters B entspricht, also unter der Adresse S_ + (a + 1 ). Dies entspricht der Speicherstelle, die vorher durch das (a + l)-te Element der Untergruppe S~ besetzt war. In ähnlicher Weise dient die STQ-S_-B Steuereinheit 40, die die letzte, die Untergruppe S_ permutierende Stufe ist, zum Speichern ( to store ) des Inhalts des MQ Registers 16, in diesem Falle das (a + l)-te Element der Untergruppe S_, unter der Adresse S- + a , die vorher das α -te Element der S„ Untergruppe gespeichert hatte.
Hieraus ist daher ersichtlich, daß die Steuereinheiten 34 bis 40 das gewünschte Ergebnis des Speicherstellenaustausches der a -ten und der (a +1)-ten Elemente der Untergruppe S_ in Übereinstimmung mit dem im Operandspeicher 20 enthaltenen Austauschzeichen α bewirkt haben. Es sei bemerkt, daß die
Steuereinheiten 34 bis 40, zusammen mit den Übrigen in Figur 1 dargestellten Steuereinheiten vorteilhafterweise Impulsverteilungsschaltungen zum Erzeugen von Signalen aufweisen, die die entsprechende Schaltungsfunktion einleiten, oder alternativ eine Mehrzahl gespeicherter Binärziffern, gefolgt von einem gemeinsamen Befehlsdekodierer.
Eine das Indexregister prüfende und herabstufende ( decrementing ) Steuereinheit 42 der Figur dient zur Prüfung des Inhalts des Indexregisters A. Enthält das Register A eine Digitalzahl größer als 1, ein Zustand der anzeigt, daß jede der (N/2) j möglichen Ordnungen der Untergruppe S7 nicht erzeugt worden ist, so wird die Einheit 42 dahingehend wirksam, den Inhalt des Index-
009817/149*
ORIGINAL !NSPEGTEO
14SS282
registers A um eins zu vermindern und in den Operationszähler 12 die Binärzahl 01011 einzuschreiben. Folglich wird der Zähler 12 als nächstes die CLA-IC-A Steuereinheit 35 aktivieren, und dadurch die nächste, in Übereinstimmung mit dem nächsten Austauschzeichen, das Operandspeicher 20 gespeichert ist, durchzuführende Permutation der Untergruppe S„ veranlassen.
Erkennt die Prüfsteuereinheit 42 eine im Register A gespeicherte digitale 1, was anzeigt, daß jede der (N/2) j Permutationen der Untergruppe S„ erzeugt worden sind, dann ist die Einheit 42 inaktiv, es ist daher dem Operationszähler 12 gestattet, als nächstes die das Indexregister C prüfende und herabstufende Einheit 43 zu aktivieren. Die Einheit 42 kann irgendeine übliche digitale Vergleichs- und Subtrahierschaltung aufweisen, eine solche Schaltung kann aber auch im zugeordneten Indexregister A untergebracht sein. Im letzteren Fall würde die Steuereinheit 42 einfach eine Impulsverteilungsanordnung aufweisen.
Die beiden verbleibenden Prüfeinheiten 43 und 44 sind im Aufbau der Steuer- ' einheit 42 ähnlich und sind dafür ausgelegt zu bestimmen, ob jede der( N/2) j
Permutationen der Untergruppe S, beziehungsweise die »
(N/2) I . (N/2) j Unterteilungen der N Eingangsziffern durchgeführt worden sind. Im einzelnen bewirkt die das Indexregister C prüfende und herabstufende Einheit 43 die Übergabe der Steuerung auf die die Untergruppe S, permutierende Steuereinheit 33 sowie die Herabstufung des Registers C um 1, falls dieses
009817/149*
-is- 14SS282
Register eine digitale Zahl größer als 1 enthält. Ist der Inhalt des Indexregisters C gleich 1, dann ist die Einheit 43 inaktiv und zeigt demnach an, daß alle Permutationen der Untergruppe S, erzeugt worden sind.
In ähnlicher Weise kassiert die Unterteilungsprüfeinheit 44 das Digitalwort 00010 in den Operationszahler 12, wenn weniger als die N '
(N/2) I · (N/21 j möglichen Unterteilungen der N Eingangsgrößen von der Steuereinheit 32 erzeugt worden sind. Sind umgekehrt alle möglichen Unterteilungen der Eingangsliste durchgeführt worden, so ist die Steuereinheit 44 inaktiv und zeigt daher an, daß jede der N J Permutationen erzeugt worden sind.
Eine Ausgangsverwendung-Steuerschaltung 41 dient in der Schaltung nach Figur 1 dazu, auf die permutierten Eingangsziffern in der im Einzelfall gewünschten Weise anzusprechen. Soll beispielsweise das vorstehend erwähnte Problem des Reisenden untersucht wenden, so würde die Ausgangssteuereinheit 41 in der Lage sein, die Reiseentfemung entsprechend dem durch die jeweilige Reihenfolge der Städte angezeigten Weg aufzusummieren, wie dies durch die im Operandspeicher 20 gespeicherten permutierten Untergruppen S, und S-gegeben ist«
Die Gesamtarbeitsweise der Anordnung nach Figur 1 kann anhand des in Figur 3 dargestellten Signaifiußdiagrammes leichter verständlich werden. Die in Klammern geschriebenen Bezugsziffern in jedem der Kästchen der Figur 3
009817/149$
14SS282
entsprechen den in gleicher Weise bezeichneten Steuereinheiten und Ausführungsschaltungen, die in der Hauptsache das Verhalten der entsprechenden Funktion beeinflussen.
Nach dem oberen Teil der Figur 3 werden eine Liste von N Eingangsziffem und (N/2) j Austauschzeichen zunächst in den Operandspeicher 20 eingespeichert. Dann werden die N Eingangsgrößen in zwei unähnliche Untergruppen S, und S„ gleicher Größe unterteilt und in den entsprechenden Stellen S1 + 1 bis S1 + (N/2) beziehungsweise S3 + 1 bis S3 + (N/2) ( Figur 2) gespeichert.
Als nächstes wird eine Permutation von jeder der Untergruppen S, und S_ erzeugt und die interessierende Ausgangsaufgabe (output task) wird, auf das gesamte Ordnen der S, und S_ Untergruppen der N Eingangsziffern hin, ausgeführt. Ansprechend auf die Vervollständigung der Ausgangsoperation, wird die nächste Permutation der Untergruppe S„ durchgeführt, und zwar mit Hilfe der Ausgangsweiterverwendung-Steuerschaltung 41, die durch diese neue Reihenfolge aktiviert wird. Dieser funktionelle Zyklus, der in Figur 3 als Operationsschleife 1 bezeichnet ist, setzt sich solange fort, bis alle Reihenfolgen der Untergruppe S_ erzeugt worden sind. Sind alle Permutationen der Untergruppe S9 erzeugt worden, so wird die nächste oder die zweite Reihenfolge der Untergruppe S, bewirkt« Hierauf folgend werden jede der (N/2) { Permutationen der Untergruppe S_ wiederum durch die Operationssshleife 1 erzeugt, wobei die Ausgangseinheit 41 wiederum auf jede Reihenfolge der
009817/14$·
~15~ 149S282
N Eingangsziffern ansprechend, wirksam ist.
Die Vorstehend beschriebene Arbeitsweise der Schaltung, die in Figur 3 als Operationsschleife 2 identifiziert ist, wiederholt sich solange bis jede der möglichen Penmutationen der Untergruppe S. erzeugt worden ist. Wie vorstehend angegeben ist, wird die Funktionsschleife 1 (N/2) J mal für jede der (N/2) ( Umsetzungen durch die Schleife 2 ausgeführt. Folglich werden insgesamt (N/2) {· (N/2) I Permutationen für jede Unterteilung der N Eingangsgrößen erzeugt.
Jedesmal wenn die Schleife 2 die vollen (N/2) I Zyklen ausgeführt hat, wird die Systemsteuerung auf die Unterteilungserzeugung-Steuereinheit 32 zurückverlegt, um das nächste Unterteilen der N Eingangsobjekte zu bewirken. Diese Schaltungsfunktion entspricht der äußeren Funktionsschleife 3 der Figur 3.
Wie vorstehend erwähnt worden ist, können N verschiedene Objekte in zwei verschiedene Untergruppen von N/2 Elemente auf je insgesamt
(N/2) J. (N/2) ( Wegen kombiniert werden. Folglich wird die mittlere Operationsschleife 2
(K/2) I. (tV2) I ' (N/2) 1
mal durchlaufen und die innerste Schleife 1
N ' ■ . (N/2) J . (N/2) | = NJ (4)
(N/2) \. (N/2) I
009 817/1491
14SS282
was der Gesamtanzahl möglicher Permutationen der N Objekte entspricht. Es sollte beachtet werden, daß die am häufigsten durchgeführten Schaltungsoperationen, nämlich diejenigen die innerhalb der Grenzen der Schleife 1 durchgeführt werden, relativ einfach und dafür ausgelegt sind, die Permutationen von nur N/2 anstelle von N Größen zu erzeugen. Dies kann dadurch weiter veranschaulicht werden, wenn man beachtet, daß 10 { gleich 3.628.800 ist während (10/2) I nur 120 ist. Ferner ist ersichtlich, daß, wenn in der Schaltung nach Figur 1 N = IO ist, nur N/2 J also 120 Speicherstellen im Operandspeicher 20 vorgesehen sein müssen, damit die Austauschzeichen an bis a..g untergebracht werden können. Werden jedoch die Permutationen direkt aus den 10 Eingangsziffern durch die hier betrachtete Austauschmethode erzeugt, so würden 3.628.800 Austauschzeichen-Speicherstellen erforderlich sein. Diese Speicherstellenanzahl ist lästig groß.
Zur weiteren Erläuterung der Wirkungsweise der permutationserzeugenden Schaltung nach Figur 1 sei angenommen, daß es erwünscht ist, die Permutationen von sechs Eingangsziffern, die mit den Bezugszeichen 1, 2, 3, 4, 5 und 6 bezeichnet sind und über die Leitung 24 zugeführt werden, zu erzeugen. Demgemäß veranlaßt die Eingangsliste-Einlesesteuereinheit 30, wenn sie vom Operationszähler 12 aktiviert wird, die Eingangs-Ausgangs-Überwachungseinheit 18, die sechs Eingangszahlen in den Speicher 20 in digitaler Form einzugeben. Die als nächste aktivierte Steuereinheit 31 dient dann zum Placieren der Austauschzeichen 2, 1,2, 1,2 und 1, die entsprechend Gleichung (1)
0 0 9817/1 A 9*
erzeugt und über die Leitung 24 zugeführt worden sind, in die (6/2) I oder sechs Speicherstellen, die mitcL^ beginnen und der Adresse ICHNGE (Fig. 2) vorausgehen, des Operandspeichers 20#
Nachdem die vorstehend beschriebene Anfangsoperation des Speichers 20 ausgeführt ist, erzeugt die Steuereinheit 32 die erste Unterteilung der sechs Eingangsgrößen in Untergruppen gleicher Größe S, und S„. Zu Erläuterungszwecken sei angenommen, daß die Ziffern 1,2 und 3 einerseits 4, 5 und andererseits in den Untergruppen S, bzw, S7 gelegen sind. Demgemäß werden diese Ziffern in die Speicheradressen S, + 1, S, + 2, und S, + 3 beziehungsweise S«+ 1, S_ + 2 und S + 3 eingespeichert.
Auf den vorstehenden Unterteilungsprozeß folgend, ist die die Untergruppe S, permutierende Steuereinheit 33 dafür ausgelegt, das Indexregister B auf (6/2) I = 6 einzustellen und auch die erste Permutation der Untergruppe S, in Übereinstimmung mit dem ersten Austauschzeichen, nämlich der Zahl 2, zu erzeugen, die in der Speicherstelle ^0 vorhanden ist. Folglich bewirkt die Einheit 33 den Austausch der zweiten und dritten Elemente von S. und erzeugt die neugeordnete S. Untergruppe 1, 3 und 2. Die genaue Operation der Einheit 33 folgt der vorstehend im einzelnen für die die Untergruppe S-permutierende Einheit 50 beschriebenen Weise identisch.
Die Steuereinheiten 34 bis 40 der Gesamtanordnung 50 sind funktionell dafür
009817/1408
ausgelegt, eine neue Reihenfolge der Untergruppe S. zu erzeugen, und zwar während jeder Ausführung derselben. Während der ersten Aktivierung dieser Einheiten beschickt die LX - (N/2) j - A Steuereinheit 34 das Indexregister A mit der Digitalzahl (6/2) { = 6. Anschließend wird das Austauschzeichen 2, das in der Chi Q. Speicherstelle ICHNGE-6 enthalten ist dem Akkumulatorregister 15 unter der Steuerung der CLA-IC-A Einheit 35 zugeführt, und a -2 wird in das Indexregister B durch die PNA-B Steuereinheit 36 eingeschrieben.
Dann werden die CLA-S3-B und LDQ-S3 + 1-B Steuereinheiten 37 bzw. 38 aufeinanderfolgend zu dem Zweck aktiviert, die Elementzeichen 5 und 6 der S -Untergruppe, die in den S Untergruppenspeicheradressen S + 2 und (S2+ 1) + 2 = S„ + 3 gelegen sind, zu den AC bzw. MQ Registern 15 und 16 zu übertragen. Schließlich placieren die STO-S + 1 -B and STQ-S3 -B Steuereinheiten 39 und 40 die S- Untergruppenzeichen 5 bzw. 6, die in den AC und MQ Registern 15 bzw. 16 vorhanden sind, in die Speicherstellen S- + 3 und S + 2. Folglich sind die permutierten S Elemente, die in den Speicherstellen S +1 bis S + 3 des Speichers 20 vorhanden sind, die Zahlenfolge 4, 6 und 5, und da rübe rhi na us besteht die ganze aus sechs Elementen bestehende Eingangs liste, die in den Speicherstellen S, + 1 bis S, + 3 und S„ + 1 bis S9 + 3 vorhanden ist, aus der Zahlenfolge 1, 3, 2, 4, 6 und 5#
Der Operationszähler 12 aktiviert als nächstes die Ausgangsverwendung-Steuereinheit 41, die auf die vorstehend angegebene permutierte Eingangs-
009817/1491
ORIGINAL INSPECTED
-19- 14S9282
gruppe entsprechend der im Einzelfall gewünschten Untersuchung anspricht. Nach Vervollständigung dieses Schrittes prüft die PrUfeinheit 42 das Indexregister A und bestimmt, daß die hierin gespeicherte Zahl, nämlich eine digitale 6, größer als 1 ist. Demgemäß zieht die Einheit 42 eine 1 vom Inhalt des Registers A ab, so daß hierin eine digitale 5 gespeichert bleibt, und schreibt das binäre Wort 01011 in den Operationszähler 12 ein.
Folglich aktiviert der Zähler 12 als nächstes die ClA-IC-A Steuereinheit 35, die zu diesem Zeitpunkt dazu dient, die digitale 1, die in der <~ \ Adressenstelle ICHNGE-5 gespeichert ist, in das Akkumulatorregister 15 einzugeben. Die Steuereinheiten 36 bis 40 bewirken dann eine Umkehr der Speicherstellen der Elemente, die in den Adressen S„ + 1 und S_ + 2 enthalten sind, in der vorstehend beschriebenen Weise derart, daß die neue permutierte S« Untergruppe, nämlich 6, 4 und 5 , nunmehr in den Speicherstellen S_ +1 bis S + 3 liegt.
Die vorstehende Betriebsweise, die der funktioneilen Schleife 1 der Figur 3 entspricht, wiederholt sich nun zyklisch bis die PrUfeinheit 42 im Indexregister A eine digitale 1 feststellt, was anzeigt, daß alle sechs Permutationen der drei S_ Untergruppenelemente erzeugt worden sind. Zu diesem Zeitpunkt bestimmt der als nächstes aktivierte PrtJfgenerator 43 daß das Indexregister C, daß der die S. Untergruppe permutierenden Anordnung 33 zugeordnet ist, eine digitale 6 gespeichert hat, eine Zahl also, die größer als 1 ist. Folglich ver-
009817/149*
.20- 148S282
mindert die Einheit 43 den Inhalt des Registers C um 1 und Übergibt die Systemkontrolle via Operationszähler 12 an die Einheit 33 ab, damit die nächste Permutation der S, Untergruppe erzeugt wird. Ansprechend hierauf und auf jede folgende S, Untergruppenfolge, werden wiederum jede der sechs Permutationen der Untergruppe S9 durch die vorstehend erwähnte Permutationssteuereinheit 50 erzeugt,
Sind alle sechs der S, Untergruppenfolgen erzeugt worden, was einem passieren der funktioneilen Schleife 2 der Figur 3 entspricht, gibt die Steuereinheit 43 die Steuerung an die UnterteilungsprUfeinheit 44 ab. Zu
diesem Zeitpunkt bestimmt die Einheit 44 daß nur eine der * . .
(6/2) j- (6/2) I Unterteilungen der sechs Eingangsobjekte durchgeführt worden ist. Demgemäß schreibt die Einheit 44 das Binärwort 00010 in den Operationszähier 12 ein, der als nächstes dann die UnterteilungserzeugunjjrSteuerschaltung 32 aktiviert. Die Steuereinheit 32 erzeugt dann die nächste Unterteilung der sechs Eingangsobjekte, und die die S, und S- Untergruppe permutierende Anordnungen 33 bzw, 50 werden dann erneut in der vorstehend beschriebenen Weise wiederholt wirksam.
Sind alle zwanzig Unterteilungen der Eingangsliste durchgeführt worden, und zwar entsprechend eines vollständigen Durchlaufes der Schleife 3 in Figur 3, ist jede der gewünschten Permutationen erzeugt worden und die Anordnung nach Figur 1 wird dementsprechend inaktiv gemacht. Darüberhinaus
009817/149*
ORIGINAL INSPECTED
-21- 1488282
sollte beachtet werden, daß die permutationserzeugende Anordnung der Figur 1 die 6 J Folgen dor aus sechs Elementen bestehenden Eingangsgruppe schnell und auf vergleichsweise einfache Weise ausgeführt hat, weil die am häufigsten gebrauchten Steuereinheiten, nämlich die Einheiten 35 bis 40, die in der die S. Gruppe permutierenden Anordnung 50 liegen, eine relativ einfache Ziffemaustauschoperation in einer kleinen Untergruppe, die nur drei Elemente enthält, ausführen.
Die Anordnung der Figur 1 ist zwar so dargestellt worden, daß sie zwei unterteilte Untergruppen S, und S- gleicher Größe enthält, eine derartige · Unterteilung ist aber weder auf zwei Untergruppen noch darauf beschränkt, daß die Untergruppen gleiche Größe besitzen. Allgemein gesprochen, kann eine Gruppe von N Eingangsobjekten in { Untergruppen unterteilt werden, und zwar mit j aufeinanderfolgend betätigten, die Untergruppen permutierenden Einheiten und mit j Prüfsteuereinheifen, die die entsprechenden Paare der Anordnungen 33 und 50 bzw. 42 und 43 der Figur 1 ersetzen. Zusätzlich können jede der j unterteilten Untergruppen jede Zahl von Elementen enthalten, obgleich die Gesamtanordnung am wirksamsten betrieben werden kann, wenn die Untergruppengrößen so gewählt werden, daß sie je etwa gleich groß sind. Allgemein gesprochen muß jedoch eine verschiedene Liste von Austauschzeichen im Operandspeicher 20 für jede Untergruppe unterschiedlicher Größe vorgesehen sein.
009817/Udd
Zusammengefaßt verkörpert eine erfindungsgemäße Rechenanordnung eine Mehrzahl ineinandergeschachtelter iterativ durchlaufender funktioneller Schleifen, um die Permutationen von N Objekten zu erzeugen» Die äußere Schleife unterteilt die N Objekte in Untergruppen fixierter Größe, und die inneren Schleifen umfassen je Element Austauschoperationen zum Erzeugen von Permutationen einer entsprechenden Untergruppe der Eingangsziffern,
Die Anordnung erzeugt Permutationen in hoher Geschwindigkeit, und zwar durch Reduzieren des Problems großer Werte für N auf ein solches für kleine N. Zusätzlich erfordert der Aufbau eine relativ kleine Speicherkapazität, die von der Größe der Eingangsliste effektiv unabhängig ist.
9-017/14*1
ORIGINAL INSPECTED

Claims (2)

14S9282
PatentansgrUche
1# Anordnung zum Erzeugen von Permutationen der In einer Eingangs!iste vorhandenen Größen mit
einem Speichermedium zum Speichern der Eingangsliste, gekennzeichnet durch
eine auf die Größen der gespeicherten Eingangsliste ansprechende Schaltung ( 20, 32, 44 ) zum Erzeugen von Unterteilungen der Größen der Eingangsliste in eine Mehrzahl getrennter Untergruppen (S,, S- ), eine auf jede durch die Erzeugungsschaltung verursachte Unterteilung der Eingangsgrüßen ansprechende Schaltung ( 15, 16, Indexregister B und C, 17, 20, 33, 43 ) zum Permutieren der in einer ersten Untergruppe ( S, ) gelegenen Größen und
eine auf jede Permutation der ersten Untergruppe (S.) ansprechende Schaltung ( 15, 16, Indexregister A und B, H, 34-40, 42 ) zum Erzeugen einer Mehrzahl Permutationen der in einer -aveiten Untergruppe ( S- ) gelegenen Größen.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß das Speichermedium auch eine Mehrzahl Austauschzeichenspeicher und die Anordnung ferner eine Schaltung zum aufeinanderfolgenden Austauschen der Speicherstellen im Speichermedium von ausgewählten Untergruppengroßen, und zwar in Übereinstimmung mit aufeinanderfolgend ausgewählten der Austauschzeichen, aufweist. 009817/1498
3, Anordnung nach Anspruch 1 und 2, dadurch gekennzeichnet, daß die Schaltung zum aufeinanderfolgenden Austauschen der Speicherstellen der Untergruppengrößen folgende Teile besitzt s ein Indexregister,
Schaltungen zum Austauschen der Speicherstelle zweier benachbarter Größen in Übereinstimmung mit dem ausgewählten, durch das indexregister bestimmtet! Austauschzeichen, und Schaltungen zum iterativen Ändern des Inhaltes des Indexregisters.
009817/1498
DE19651499282 1964-09-30 1965-09-20 Anordnung zum Erzeugen von Permutationen Pending DE1499282A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US400329A US3383661A (en) 1964-09-30 1964-09-30 Arrangement for generating permutations

Publications (1)

Publication Number Publication Date
DE1499282A1 true DE1499282A1 (de) 1970-04-23

Family

ID=23583159

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19651499282 Pending DE1499282A1 (de) 1964-09-30 1965-09-20 Anordnung zum Erzeugen von Permutationen

Country Status (4)

Country Link
US (1) US3383661A (de)
DE (1) DE1499282A1 (de)
GB (1) GB1104407A (de)
NL (1) NL6512000A (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2498849A1 (fr) * 1981-01-26 1982-07-30 Commissariat Energie Atomique Generateur de signaux logiques combines
FR2507414A1 (fr) * 1981-06-09 1982-12-10 Commissariat Energie Atomique Generateur de signaux logiques combines

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3593317A (en) * 1969-12-30 1971-07-13 Ibm Partitioning logic operations in a generalized matrix system
US3978452A (en) * 1974-02-28 1976-08-31 Burroughs Corporation System and method for concurrent and pipeline processing employing a data driven network
GB9801713D0 (en) * 1998-01-27 1998-03-25 Sgs Thomson Microelectronics Executing permutations

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2856595A (en) * 1954-06-09 1958-10-14 Burroughs Corp Control apparatus for digital computing machinery
US3038660A (en) * 1955-07-07 1962-06-12 Univ Washington Electric synthesizer of mathematical matrix equations
US2978680A (en) * 1957-12-06 1961-04-04 Bell Telephone Labor Inc Precession storage delay circuit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2498849A1 (fr) * 1981-01-26 1982-07-30 Commissariat Energie Atomique Generateur de signaux logiques combines
EP0058108A1 (de) * 1981-01-26 1982-08-18 Commissariat à l'Energie Atomique Generator für kombinierte logische Signale
FR2507414A1 (fr) * 1981-06-09 1982-12-10 Commissariat Energie Atomique Generateur de signaux logiques combines

Also Published As

Publication number Publication date
US3383661A (en) 1968-05-14
GB1104407A (en) 1968-02-28
NL6512000A (de) 1966-03-31

Similar Documents

Publication Publication Date Title
DE2350225C2 (de)
DE1901343C3 (de) Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen
DE2819571C2 (de)
DE2331589A1 (de) Datenverarbeitungsanordnung
DE2310631C3 (de) Speicherhierarchie für ein Datenverarbeitungssystem
DE2621882A1 (de) Dynamischer digitalspeicher mit ununterbrochen umlaufendem datenfluss
DE2364408A1 (de) System zur erstellung von schaltungsanordnungen aus hochintegrierten chips
DE2502910A1 (de) Informations-anordnungseinrichtung
DE2364254B2 (de) Schaltungsanordnung fuer datenverarbeitende geraete
DE1774052B1 (de) Rechner
DE2221442A1 (de) Assoziativspeicher
DE2926322A1 (de) Speicher-subsystem
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE3144563C2 (de)
DE2506671C3 (de) Binärdaten-Handhabungsnetzwerk
DE2357654C2 (de) Assoziativspeicher
DE1499282A1 (de) Anordnung zum Erzeugen von Permutationen
DE2311503A1 (de) Datenverarbeitungsanlage mit mehreren zentraleinheiten
DE2459476C3 (de)
DE1237621C2 (de) Informationsspeicher
DE2459476A1 (de) Schaltungsanordnung fuer nichtzyklische datenpermutationen
DE2649147C2 (de) Anordnung zum wahlweisen Durchführen von logischen und arithmetischen Operationen
DE2000608C3 (de) Schaltungsanordnung fuer eine Nachrichtenverarbeitungs-,insbesondere fuer eine Nachrichtenvermittlungsanlage
DE1296429B (de) Datenbearbeitungsanlage
DE2024584B2 (de) Steuereinrichtung für eine allgemeine Datenverarbeitungseinrichtung