From wiki.network-crawler.de
1 /* Implementierung einer McCulloch-Pitts-Zelle mit relativ hemmenden Leitungen
2 * von Beyer Philipp (www.network-crawler.de)
3 */
4
5 #include <stdio.h>
6 /* define _DEBUG 1 */
7
8 int McCullochPittsZelle (int stimulLeitungen[], int anzstimulLeitungen, int hemmenLeitungen[], int anzhemmenLeitungen, int schwellwert) {
9 int i;
10 int shigh = 0, hhigh = 0;
11
12 #ifdef _DEBUG
13 printf ("\nSchwellwert: %d\n\n", schwellwert);
14 printf ("Stimulierende Leitungen: ");
15 #endif
16
17 for (i = 0; i < anzstimulLeitungen; i++) {
18 #ifdef _DEBUG
19 printf ("%d ", stimulLeitungen[i]);
20 #endif
21 if (stimulLeitungen[i] == 1) shigh++;
22 }
23 #ifdef _DEBUG
24 printf ("\n\n-> gesetzte stimulierende Leitungen: %d", shigh);
25
26 printf ("\n\nHemmende Leitungen: ");
27 #endif
28
29 for (i = 0; i < anzhemmenLeitungen; i++) {
30 #ifdef _DEBUG
31 printf ("%d ", hemmenLeitungen[i]);
32 #endif
33 if (hemmenLeitungen[i] == 1) hhigh++;
34
35 }
36 #ifdef _DEBUG
37 printf ("\n\n-> gesetzte hemmende Leitungen: %d\n\n", hhigh);
38 #endif
39
40 if ((shigh - schwellwert) >= hhigh ) return 1;
41 else return 0;
42 }
43
44
45 int main (void) {
46 int stimulLeitungen[] = {
47 0
48 };
49 int hemmenLeitungen[] = {
50 0, 0
51 };
52
53 /* Beispiele:
54 *
55 * Monotone logische Funktionen
56 * ----------------------------
57 * Konjunktion - AND Funktion:
58 *
59 * 0 1
60 * ---------
61 * 0 | 0 0 -> Hemmende Leitungen alle 0
62 * | Schwellwert auf 2
63 * 1 | 0 1
64 *
65 * Disjunktion - OR Funktion:
66 *
67 * 0 1
68 * ---------
69 * 0 | 0 1 -> Hemmende Leitungen alle 0
70 * | Schwellwert auf 1
71 * 1 | 1 1
72 *
73 * Nichtmonoton
74 * ------------
75 * Negation - NOT - Funktion
76 *
77 * -> Eine hemmende Leitung 1 od. 0
78 * Stimulierende Leitungen alle 0
79 * Schwellwert 0
80 *
81 * NOR - Funktion
82 * 0 1
83 * ---------
84 * 0 | 1 0 -> Eingänge hemmende Leitungen
85 * | Stimulierende Leitungen alle 0
86 * 1 | 0 0 Schwellwert auf 0
87 */
88
89 int anzstimulLeitungen = sizeof(stimulLeitungen) / sizeof(int);
90 int anzhemmenLeitungen = sizeof(hemmenLeitungen) / sizeof(int);
91
92 printf ("\nAufruf McCullochPittsZelle (relativ hemmende Leitungen!):\n\n");
93
94 printf ("\nAusgabe: %d\n\n", McCullochPittsZelle (stimulLeitungen, anzstimulLeitungen, hemmenLeitungen, anzhemmenLeitungen, 0));
95
96 return 0;
97 }