enetwork20250807.c

/* (C) David Vajda
 * 2025-08-08
 * Circuit Parallel/Seriell excersize */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N               32
#define N_EDGES         6
#define VALENCE_2       0
#define VALENCE_3       1
#define VALENCE_4       2

int main (void) {
    printf("(C) David Vajda\n");
    printf("2025-08-08\n");
    printf("Circuit Parallel/Seriell excersize\n");


    /* nicht eigener Teil */

    time_t t;
    struct tm *tm_info;

    time(&t);
    tm_info = localtime(&t);

    char date_string[25];
    strftime(date_string, sizeof(date_string), "%Y-%m-%d %H:%M:%S", tm_info);

    printf("%s\n\n", date_string);

    /* bis hierhin */
    srand (time(NULL));
    int i;
    int j;

    int adj_matrx [N][N];
    int n_connects [N];

    for (i = 0;  i < N;  i++)
        for (j = 0;  j < N;  j++)
            adj_matrx [i][j] = 0;

    /*
     * es muessen eine gewisse menge an
     * 2er valenz knoten
     * 3er valenz knoten
     * 4er valenz knoten
     * vorhanden sein
     * daneben duerfen auch knoten mit hoeherer valenz vorhanden sein
     *
     *
     * das regele ich so
     * ich mache zaehler
     * n2er
     * n3er
     * n4er
     *
     * die sind voreinagestellt und  werden heruntergezaehlt
     *
     * gleichzeitig mache ich eine hashtabelle
     * keinen stack fuer 2er, 3er und 4er knoten
     * gleich am anfang
     *
     * diese werden zufaellig aufgefuellt. befindet sich ein knoten
     * darin, darf er nicht weiter verwendet werden, wenn er zum beispiel ein zweier knoten ist...
     */

    /*val2 [N];
    val3 [N];
    val4 [N];*/
    valence [N_EDGES][N];
    used [N];

    /* das muss man jetzt so machen wenn sie 6 knoten mit der valenz 2 haben wollen
     * 5 mit der valenz 3
     * und 2 mit der valenz 4
     * dann muessen sie mitrechnen, sie haben, zum 4 knoten verbraucht von den 6
     * knoten mit der valenz 2
     * so, dann muessen sie eine variable nehmen, die ist initlasiert mit 6
     * und zaehlen jedes mal runter, wenn 2 kommt
     * das problem ist nur, sie haben gleichzeitig zufallszahlen
     * es genuegt nicht 4 und 3 zu erzeugen und am ende die zweier runter zaehlen
     * da sie aber zwischen 4, 3, 2 unterscheiden  muessen
     * haben sie 3 werte, die sind jeweils als index in einem eine zwei dimensionalen
     * feld
     * wenn man jetzt, 3 so zu sagen elemente hat, dann kann ich machen
     * rand () % 3
     * dann ist es entweder 1, 2, oder 3
     * das problem ist nur, dass das an auflagen gebunden ist, die 3 soll so zu sagen
     * doppelt so oft auftreten, wie die 1.
     * dafuer gibt es eine einfache moeglichkeit
     * sie muessen nicht sagen
     * rand () % 3
     * sondern, sie nehmen 3 mal so viel 3 wie 2 und 2 x so viel 2 wie 1
     * dann haben sie bei 2 und 1, drei moeglichkeiten
     * bei rand () % 3 = 2 oder 1, nehmen sie die 2, bei rand () % 3 = 0, die 1
     * jetzt ist ein verhaeltnis da
     * jetzt fuer drei zahlen
     * bei rand () % 6, ist bei 5, 4, 3, nehmen wir 3
     * bei 2, 1 nehmen wir 2
     * bei 0 nehmen wir 1
     * jetzt gibt es aber eine weitere auflage, weil sich das verbraucht
     * im urnenmodell wahrscheinlichkeitsrechnung, ohne zuruecklegen
     * jetzt ist die wahrscheinlichkeit, dass so zu sagen, weil wenn ich
     * einen 3er verbraucht, dann muss der bereich, --1 also dekrementiert werden
     * also, nicht
     * feld [2] = x
     * sondern
     * if ((r >= 2) && (r <= 3)) ...
     * so, dann muss dazu kommen, der bereich schwindet aber, wir haben eine obere grenze
     * und untere, dabei muessen wir von einem element zum naechsten die obere grenze
     * nehmen, die bei dem anderen die untere ist, und dazu: muss der
     * wert modulo geschrumpft werden
     * weil das ein schaltplan ist, muss 100% korrektheit nicht gegeben sein
     *
     *
     * jetzt bleibt noch ein problem:
     *
     * Das mit der Grenze aber nicht geht, weil das mit der Grenze aber nicht geht weil sie dir unten hinterher ziehen müssen machen die multiplizier Wert. Also sie müssen es multiplizieren, weil es mit der Grenze geht sowieso nicht. Sie müssen sozusagen den Wert multiplizieren seine Problem das zweite ist wir haben jetzt hier die Knoten, die nehmen wir einfach mal klein X und was dazwischen sind, sind die Kanten und die Kanten sind die Bauteile Es ist eine Problem und das andere Problem ist, dass wir, wenn wir das haben. Wir dürfen nicht denken, wir würden einen Knoten haben und den mit einer anderen verbunden haben. Dann musst du es in der adjazens Matrix auch umgekehrt der Fall sein also das ist das Problem. Wenn sie den Knoten zwei mit dem Knoten fünf verbinden, dann muss es auch umgekehrt der Fall sein das darf aber jetzt nicht so ne irre für führenden Annahme soll er jetzt nicht in die irre führen, weil wenn sie den Knoten fünf mit dem Knoten zwei verbunden haben dann muss es auch umgekehrt der Fall sein und wenn der Knoten zwei sozusagen zwei Nachbarn also zwei Nachbarknoten hat dann ist er einmal mit fünf verbunden und einmal mit sechs umgekehrt. Das würde sozusagen hier ein Widerstand bedeuten und dann Widerstand wenn ein Knoten sozusagen zwei Nachbarn hat. Zwischen den Knoten liegen die Bauteile dann hat er jetzt zwei Widerstände. Das ist einfach ein Leiter die sind einfach widerstände in Serie. Zum Beispiel muss man jetzt umgekehrt denken wenn der Knoten 2, 2 Nachbarn hat dann kann der Knoten fünf. Trotzdem sagen wir sechs Nachbarn haben das darf nicht in irre führen.
     *
     * Es gibt ein besseres mathematisches Mittel, wie wir sehen. Wenn wir die Mathematik berücksichtigen, kriegen wir alles in den Griff sonst auch aber es geht eleganter
Der Grafentheorie sagt weiß, dass es ne Folge von Valence gibt und hier haben wir das nicht gut erklärt, weil wir können das einfach so machen zum Beispiel
(2,2,4,6,2)
Wie auch immer ist eine Folge von Valence. Jeder der Knoten hat eine entsprechende Anzahl von Valence gut damit sind wir das Problem auch schon wieder los. Ich lass das alte trotzdem da stehen.

Es gibt ein besseres mathematisches Mittel, wie wir sehen. Wenn wir die Mathematik berücksichtigen, kriegen wir alles in den Griff sonst auch aber es geht eleganter

Der Grafentheorie sagt weiß, dass es ne Folge von Valence gibt und hier haben wir das nicht gut erklärt, weil wir können das einfach so machen zum Beispiel

(2,2,4,6,2)

Wie auch immer ist eine Folge von Valence. Jeder der Knoten hat eine entsprechende Anzahl von Valence gut damit sind wir das Problem auch schon wieder los. Ich lass das alte trotzdem da stehen.

Und das andere Problem bleibt. Wir müssen sozusagen dafür sorgen, dass wir sechs zweier haben vier Dreier und zwei Vierer. Deswegen müssen wir trotzdem das mit der Wahrscheinlichkeitsrechnung also dazu zu machen, dass wir entsprechend viele zweier kriegen. Das kann man vielleicht anders lösen, indem man das Feld mit zwei füllt Und entsprechend so viele Vierer ausgibt. Also wir brauchen zum Beispiel 16 zweier weil 16 Knoten gibt und dann machen wir vier Felder wählen wir per Zufallszahlen aus und addieren jeweils ne zwei und was die Sechser betrifft, wären wir wieder zwei Knoten aus und addieren noch mal bei zwei zufälligen Zahlenvon den Vierzigern eine, zwei dazu des Problems gelöst
     */

    for (i = 0;  i < N;  i++) {
        val2 [VALENCE_2][i] = val3 [VALENCE_3][i] = val [VALENCE_4][i] = used [i] = 0;
    }
    for (i = 0;  i < N;  i++) {
        rval = rand () %
    }


return 0;
}