<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Bilal Reffas Blog]]></title><description><![CDATA[Thoughts about Math, Machine Learning, Software Engineering and Society ]]></description><link>https://blog.reffascode.de/</link><image><url>https://blog.reffascode.de/favicon.png</url><title>Bilal Reffas Blog</title><link>https://blog.reffascode.de/</link></image><generator>Ghost 2.0</generator><lastBuildDate>Sun, 05 Apr 2026 01:58:41 GMT</lastBuildDate><atom:link href="https://blog.reffascode.de/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Rationalisierung von Moral im Einsatz von autonomen Personenkraftwagen]]></title><description><![CDATA[<p><a href="https://reffascode.de/files/paper.pdf">Hier </a> könnt ihr mein Paper lesen, wie es oben im Titel schon steht, geht es um autonome Personenkraftwagen und um die Künstliche Intelligenz als "Moral-Maschine". </p><p>Ich würde mich sehr über Feedback freuen. </p>]]></description><link>https://blog.reffascode.de/rationalisierung-von-moral-im-einsatz/</link><guid isPermaLink="false">5b817eab65f69d6ea3847e16</guid><category><![CDATA[Society]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Sat, 25 Aug 2018 16:33:14 GMT</pubDate><media:content url="https://blog.reffascode.de/content/images/2018/08/philosophieauquotidien.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.reffascode.de/content/images/2018/08/philosophieauquotidien.png" alt="Rationalisierung von Moral im Einsatz von autonomen Personenkraftwagen"><p><a href="https://reffascode.de/files/paper.pdf">Hier </a> könnt ihr mein Paper lesen, wie es oben im Titel schon steht, geht es um autonome Personenkraftwagen und um die Künstliche Intelligenz als "Moral-Maschine". </p><p>Ich würde mich sehr über Feedback freuen. </p>]]></content:encoded></item><item><title><![CDATA[Rot-Schwarz-Bäume]]></title><description><![CDATA[<p>Ein Rot-Schwarz-Baum ist eine Datentruktur, die in Form eines Baumes aufgebaut ist. Es gibt wichtige Unterschiede zwischen einem herkömmlichen binären Suchbaum und einem Rot-Schwarz-Baum. Die Grundoperationen wie  DELETE und INSERT eines binären Suchbaumes  werden in $O(n)$ realisiert. Dadurch ist gegeben, dass die Operationen schnell sind, wenn die Höhe des</p>]]></description><link>https://blog.reffascode.de/master-theorem/</link><guid isPermaLink="false">5b7caac42eb390383fd0fc95</guid><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Wed, 22 Aug 2018 00:16:15 GMT</pubDate><content:encoded><![CDATA[<p>Ein Rot-Schwarz-Baum ist eine Datentruktur, die in Form eines Baumes aufgebaut ist. Es gibt wichtige Unterschiede zwischen einem herkömmlichen binären Suchbaum und einem Rot-Schwarz-Baum. Die Grundoperationen wie  DELETE und INSERT eines binären Suchbaumes  werden in $O(n)$ realisiert. Dadurch ist gegeben, dass die Operationen schnell sind, wenn die Höhe des Baumes klein ist. Ist die Höhe des Baumes allerdings groß, kann es sein, dass die Operationen länger brauchen, weil Bäume in das Unendliche wachsen können. Dieses Problem werden von Rot-Schwarz-Bäumen behoben.</p>
<p>Es gibt fünf Eigenschaften die einen Rot-Schwarz-Baum ausmachen (Cormen 2010, S. 311):</p>
<ol>
<li>Jeder Knoten ist entweder rot oder schwarz.</li>
<li>Die Wurzel ist schwarz.</li>
<li>Jedes Blatt (Nil) ist schwarz.</li>
<li>Wenn ein Knoten rot ist, dann sind seine beiden Kinder schwarz.</li>
<li>Für jede Knoten enthalten alle einfachen Pfade, die an diesem Knoten starten und in einem Blatt des Teilbaumes dieses Knoten enden, die gleiche Anzahl schwarzer Knoten.</li>
</ol>
<p>Einen Rot-Schwarz-Baum ist ein binärer Suchbaum, der jeweils pro Knoten ein zusätzliches Attribut gespeichert hat. Dieses Attribut dient zur Speicherung seiner Farbe. Die Farbe des Attributes kann entweder schwarz oder rot sein, daher auch der Name dieser besonderen Baum Datenstruktur. Durch diese Farbreihenfolge wird sichergestellt, dass kein Pfad doppelt so lang werden kann, dadurch ist der Baum balanciert. Die Anzahl der roten und schwarzen Knoten lässt sich jeweils mittels $log2(n+1)$ bestimmen. Dies ermöglicht eine maximale Tiefe von  $log2(n+1)+log2(n+1)$. Das wiederum garantiert uns, dass wichtige Operationen wie DELETE und INSERT eine Laufzeit von $O(log2(n))$ haben. Ein Rot-Schwarz-Baum, der nur aus schwarzen Knoten besteht, erfüllt die Regeln nur dann, wenn dieser ausgeglichen ist, ansonsten läge ein binärer Suchbaum vor und kein Rot-Schwarz-Baum.</p>
<p>In der Praxis können hierfür die Attribute <code>color, key, left, righ</code> und <code>parent</code> festgelegt werden, um einen Knoten repräsentieren zu können. In der Programmiersprache Java werden Rot-Schwarz-Bäume von der Klasse <code>RedBlackBST&lt;Key extends Comparable&lt;Key&gt;, Value</code> dargestellt.</p>
<hr>
<h6 id="thomashcormencharleseleisersonronaldlrivestcliffordsteinintroductiontoalgorithms3auflagemitpresscambridgemassachusetts2010isbn0262032937s311315">Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Introduction to Algorithms. 3. Auflage. MIT Press, Cambridge (Massachusetts) 2010, ISBN 0-262-03293-7, S. 311-315.</h6>
]]></content:encoded></item><item><title><![CDATA[Gießen School of AI]]></title><description><![CDATA[Unsere Mission ist es, eine weltklasse KI-Ausbildung für jeden auf der Erde kostenlos anzubieten. Unsere Türen stehen allen offen, die lernen wollen. Wir sind eine Lerngemeinschaft, die sich über fast jedes Land erstreckt und unseren Schülern beibringt, wie sie mit Hilfe der KI-Technologie einen positiven Einfluss auf die Welt ausüben können, sei es durch Beschäftigung oder Unternehmertum.]]></description><link>https://blog.reffascode.de/giessen-school-of-ai/</link><guid isPermaLink="false">5b71dc222eb390383fd0fc91</guid><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Mon, 13 Aug 2018 19:40:35 GMT</pubDate><media:content url="https://blog.reffascode.de/content/images/2018/08/school_of_ai_Giessen.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.reffascode.de/content/images/2018/08/school_of_ai_Giessen.png" alt="Gießen School of AI"><p>Ich wurde heute überrascht mit einer Email von Siraj Raval. Er hat mich selektiert als Dean. Das heißt ich bin ein Knotenpunkt von vielen Menschen auf dieser Welt. Wir sind ein Netzwerk von KI Entwicklern, die das Ziel haben Bildung kostenfrei anzubieten, damit möglichst viele Menschen davon profitieren können.</p>
<p>Was ist unsere <strong>Mission</strong>?</p>
<blockquote>
<p>Unsere Mission ist es, eine weltklasse KI-Ausbildung für jeden auf der Erde kostenlos anzubieten. Unsere Türen stehen allen offen, die lernen wollen. Wir sind eine Lerngemeinschaft, die sich über fast jedes Land erstreckt und unseren Schülern beibringt, wie sie mit Hilfe der KI-Technologie einen positiven Einfluss auf die Welt ausüben können, sei es durch Beschäftigung oder Unternehmertum.</p>
<p>Mehr über School of AI und die Mission in diesem Youtube Video:</p>
<p><a href="https://www.youtube.com/watch?v=8yu8rtXThy8&amp;t=18s">https://www.youtube.com/watch?v=8yu8rtXThy8&amp;t=18s</a></p>
</blockquote>
<p>Ich freue mich schon darauf mein Wissen mit anderen Menschen zu teilen. Es ist unglaublich wie viel man dazu lernen kann, wenn man so viele motivierte Menschen um sich herum hat.</p>
<p>Ich würde mich freuen, wenn ihr Mitglied werdet in unserem <a href="https://www.meetup.com/Giessen-School-of-AI/">Meetup</a>. Stattfinden wird das Meetup im  Institut für Informationswissenschaften an der Technischen Hochschule Mittelhessen in Giessen.</p>
<p><img src="https://blog.reffascode.de/content/images/2018/08/school_of_ai_Giessen-1.png" alt="Gießen School of AI"></p>
]]></content:encoded></item><item><title><![CDATA[Axiome]]></title><description><![CDATA[<p>Ich frage mich schon des Längeren, ob es nicht sinnvoller wäre in der Schule Mathematik zu lehren, anstatt nur das Rechnen.</p>
<p>Nun jaa... wie dem auch sei; Ich habe immer noch keine Antwort dazu....</p>
<p>Mathematik wird in der Gesellschaft oft als etwas göttliches wahrgenommen, wobei es sich oft nur, um</p>]]></description><link>https://blog.reffascode.de/axiome/</link><guid isPermaLink="false">5b6f6ebc2eb390383fd0fc8d</guid><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Sun, 12 Aug 2018 02:26:10 GMT</pubDate><media:content url="https://blog.reffascode.de/content/images/2018/08/Math--1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.reffascode.de/content/images/2018/08/Math--1-.jpg" alt="Axiome"><p>Ich frage mich schon des Längeren, ob es nicht sinnvoller wäre in der Schule Mathematik zu lehren, anstatt nur das Rechnen.</p>
<p>Nun jaa... wie dem auch sei; Ich habe immer noch keine Antwort dazu....</p>
<p>Mathematik wird in der Gesellschaft oft als etwas göttliches wahrgenommen, wobei es sich oft nur, um Formale Defintionen von anderen Menschen handelt, nicht mehr und nicht weniger, wobei dies eventuell die Schwierigkeit ausmacht. Wir Menschen sind Individuen und haben unsere eigene Art und Weise dinge auszudrücken, allerdings wäre sowas in der Mathematik verheerend, denn man braucht ein homogenes Kommunukationsmittel. Stellt euch vor wir hätten alle eine eigene Sprache. Das wäre nicht nur komisch, sondern auch sehr unpraktikabel. Eine Sprache wie Deutsch lässt sich einfacher lernen, weil wir darauf angewiesen sind in unserem Alltag. Die Mathematik können wir theoretisch links liegen lassen und könnten trotzdem unser Leben weiterleben. Das macht wahrscheinlich die andere Schwierigkeit aus. Man lernt etwas dann nur, wenn es wiederholt wird. Unser Gehirn kann nur Information nachhaltig, persistent speichern, wenn diese Aktivitäten wiederholt werden. Oder weiß jemand wie das Verb &quot;laufen&quot; im Plusquamperfekt lautet?</p>
<p>Doch was sind denn Axiome nun?</p>
<ul>
<li>Axiome sind Aussagen, die weder begründet noch bewiesen werden müssen. Es sind Aussagen die einfach fest gelegt wurden.</li>
<li>Ein Axiom ist eine unabgeleitete Aussage. Die Wahl eines Axiom ist Willkür.</li>
<li>Die Mathematik baut auf Axiome auf. Die Axiome wurden so gewählt, dass innerhalb des Axiomensystems logische Schlüsse widerspruchsfrei gezogen werden können. Diese Axiome können nicht bewiesen werden und haben nichts mit Prädikaten zu tun, also sind weder falsch noch richtig</li>
</ul>
<p>Beispiel</p>
<blockquote>
<p>1+1=2 ist wahr auf der Basis der unbewiesenen Axiome.</p>
</blockquote>
<p><strong>Axiome in der Zahlentheorie</strong></p>
<ol>
<li>$0$ ist eine natürliche Zahl ($0$ Element $N$)</li>
<li>Jeder Nachfolger einer natürlichen Zahl ist eine natürliche Zahl ($n$ Element $N$ =&gt; $n+1$ Element $N$)</li>
<li>$0$ ist nicht der Nachfolger einer natürlichen Zahl. ($0!=n+1$ für $n$ Element $N$)</li>
<li>Sind die Nachfolger zweier natürliche Zahlen gleich, so sind die Zahlen gleich ($n+1=m+1 =&gt; n=m$ für $n,m$ Element $N$)</li>
<li>Induktionsprinzip: $S(0)$ und $(S(n) =&gt; S(n+1))$ dann $S(n)$ für alle $n$ Element $N$</li>
</ol>
<blockquote>
<p>Beispiel Vollständige Induktion</p>
</blockquote>
<p>Die Vollständige Induktion ist folgendermaßen aufgebaut:</p>
<ul>
<li>Induktionsanfang (I.A.): Zeige, dass die Aussage für ein bestimmtes $n0$ (also z.B. $n0=0$) gilt. Hierbei reicht einfach das einsetzen</li>
<li>Induktionsvorraussetzung (I.V.)): &quot;Sei $n∈N$ beliebig, aber fest und es gelte: &quot;</li>
<li>Induktionsschritt (I.S.): Ausgehend von I.V. ist zu zeigen, dass die Aussage für $n0+1$ gilt. (&lt;- Der Punkt indem Axiome eine sehr wichtige Rolle spielen...Dominoeffekt)</li>
</ul>
<p>Folgende Aussage (gaußsche Summenformel) wird mittels Vollständige Induktion auf Korrektheit geprüft:</p>
<p>$\sum_{i=1}^n i = \frac{n(n+1)}{2}$</p>
<ol>
<li>
<p>Induktionsanfang:<br>
$n=1$<br>
$\sum_{i=1}^1 i = 1$</p>
<p>$\frac{1(1+1)}{2} = 1$</p>
</li>
<li>
<p>Induktionsvorraussetzung:<br>
$\sum_{i=1}^n i = \frac{n(n+1)}{2}$</p>
</li>
<li>
<p>Induktionsschritt: $n=2$<br>
$\sum_{i=1}^2 i = 3$</p>
<p>$\frac{2(2+1)}{2} = 3$</p>
</li>
</ol>
<p>Dies könnten wir natürlich einfach weiterführen mit jede Zahl $n$, doch es wäre am sinnvollsten es direkt für alle Zahlen zu beweisen, deshalb verwenden wir für $n$ einfach $n+1$, um die jeweils darauffolgende Zahl miteinzubeziehen. Ohne Axiome wäre das ganze garnicht so einfach.</p>
<p>Einsetzen $n=n+1$ in $\sum_{i=1}^n i = \frac{n(n+1)}{2}$</p>
<p>= $\frac{n(n+1)}{2}$$+$$(n+1)$</p>
<p>= $\frac {n(n+1)}{2}+ \frac {2(n+1)}{2}$</p>
<p>= $\frac {n(n+1)+2(n+1)}{2}$</p>
<p>= $\frac {n2+3n+2}{2}$</p>
<p>Es ist deutlich zu erkennen, dass sowohl die rechte als auch die linke Seite äquivalent sind, also qed.</p>
<h3 id="fazit">Fazit</h3>
<ul>
<li>Axiome sind Grundannahmen, die meist aus bereits vorhandenen Vorstellungen über den zu definierenden Begriff resultieren, von deren Gültigkeit man ausgeht und die deshalb auch nicht bewiesen werden müssen.</li>
<li>Axiome sollen zu keinem Widerspruch führen.</li>
<li>Keines der Axiome soll aus den anderen Festlegungen des Axiomensystems hergeleitet werden können.</li>
</ul>
<p>Nachdem ich die Axiome in der Mathematik verstanden habe, hat der Induktionsschritt mein Gehirn zum leuchten gebracht, denn davor hatte ich mich gefragt: &quot;Warum geht man bei der Vollständigen Induktion davon aus, dass der $n i$ Schritt korrekt ist, denn es kann ja sein, dass der Stein bei irgend einer Zahl $n$ nicht mehr fällt (Dominoeffekt)?&quot;<br>
Manchmal fehlt es nur an kleinen Informationen, um Lücken sinnvoll zu füllen.</p>
<hr>
<h6 id="heikemildenbergervorlesungsskriptumistdiemathematikwiderspruchsfreikolloquiumzurdidaktikdermathematikuniversittfreiburg3152011abgerufenaugust2018">Heike Mildenberger: Vorlesungsskriptum &quot; Ist die Mathematik widerspruchsfrei?&quot;. Kolloquium zur Didaktik der Mathematik Universität Freiburg 31.5.2011, Abgerufen August 2018.</h6>
]]></content:encoded></item><item><title><![CDATA[Trie]]></title><description><![CDATA[Trie ist eine Baumbasierte Datenstruktur, die in der Informatik verwendet wird, um das Suchen von Zeichenkette zu vereinfachen]]></description><link>https://blog.reffascode.de/trie/</link><guid isPermaLink="false">5b6ec6b42eb390383fd0fc89</guid><category><![CDATA[Software Engineering]]></category><category><![CDATA[Math]]></category><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Sat, 11 Aug 2018 12:10:17 GMT</pubDate><media:content url="https://blog.reffascode.de/content/images/2018/08/Trie-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.reffascode.de/content/images/2018/08/Trie-1.jpg" alt="Trie"><p>Was ist ein Trie ? 🤔</p>
<blockquote>
<p>Trie ist eine Baumbasierte Datenstruktur, die in der Informatik verwendet wird, um das Suchen von Zeichenkette zu vereinfachen</p>
</blockquote>
<p>Erfinder dieser Datenstruktur ist der Physiker Edward Fredkin. Dabei gibt es drei Trie Formen: Standard Trie, Komprimierter Trie und Suffix Trie. Ein Standard Trie lässt sich folgenderweise definieren: Sei $S={S_{1},\dots ,S_{k}}$ eine Menge von Zeichenketten über dem Alphabet $∑$, sodass kein String in Präfix eines anderen String. Dadurch eignen sich Tries hervorragend fürs Pattern Matching und für die Autovervollständigung beim Schreiben von Texten oder von Quellcode. Es gibt jedoch einige wichtige Bemerkungen, die genannt werden sollten. Es sei eine Menge $S$ von $s$ Strings der Gesamtlänge $n$ aus einem Alphabet der Größe $k$ und die Länge des Strings $w$ :</p>
<ul>
<li>Es müssen alle Regeln einer Baumstruktur beachten werden</li>
<li>Die Höhe von $T$ ist gleich lang des Längsten Strings in $S$,</li>
<li>Die Anzahl der Knoten von $T$ ist $O(n)$,</li>
<li>Bei der Suche nach $S$ beträgt $O(w)$.</li>
</ul>
<p>Folgende Abbildung zeigt die Zeichnketten &quot;bla&quot;, &quot;bar&quot;, &quot;blubb&quot; und &quot;foo&quot; in einem unkomprimierten Trie. Die türkise Färbung an den Enden steht hier bei dafür, dass das gesuchte Wort identifiziert ist. In der Software würde hier eine abstrakte Datenstruktur definiert werden, die eine Boolsche Variable besitzt und &quot;isEndOfWord&quot; heißen könnte.</p>
<p><img src="https://blog.reffascode.de/content/images/2018/08/Trie.jpg" alt="Trie"></p>
<p>Bei der Suche des Baumes wird immer bei der Wurzel angefangen, anschließend wird das erste Zeichen, beispielsweise &quot;b&quot; bei der gesuchten Zeichenkette &quot;bla&quot; ab, mit den jeweils zwei unteren Kinderknoten. Wird bei einem der Kinderknoten eine Referenz bestätigt, wird dieser Kinderknoten besucht. Da das Zeichen b nun identifiziert ist wird mit dem Zeichen l fortgefahren. Dieser Vorgang wird solange wiederholt bis das Wort gefunden ist und alle Zeichen bis zum türkisen Knoten identifiziert sind. Nach Zeichenkette &quot;ba&quot; zu suchen wäre Aktuell nicht möglich, weil der Knoten A nicht türkis gefärbt ist. Dieser Knoten könnte auf true gesetzt werden bei &quot;isEndOfWord&quot;, dann hätten wir die Zeichenkette &quot;ba&quot; hinzugefügt.</p>
<p>Die Effizienzklasse bei der Suche kann dann in Abhängigkeit von n abgeschätzt werden, wenn allen (die Anzahl der gespeicherten Strings) und alle möglichen Strings aus den Buchstaben a-z einer bestimmten Länge m gespeichert wurden, weil von dem längsten Fall ausgegangen werden kann. Eine höhere Komplexität kann nicht erreicht werden.</p>
<hr>
<h6 id="drsnervorlesungsskriptumalgorithmenundtextverarbeitungsommer2009abgerufenam29mai2018michaeltgoodrichandrobertotamassia">D. Rösner: Vorlesungsskriptum &quot;Algorithmen und Textverarbeitung&quot;. Sommer 2009. Abgerufen am 29.Mai 2018. Michael T. Goodrich and Roberto Tamassia.</h6>
<h6 id="datastructuresandalgorithmsinjavajohnwileysonsnewyork2006isbn100471738840isbn1397804717388484thedition">Data Structures and Algorithms in Java. John Wiley &amp; Sons, New York, 2006. ISBN-10 0-471-73884-0; ISBN-13 978-0-471-73884-8;4th edition.</h6>
]]></content:encoded></item><item><title><![CDATA[Hello World!]]></title><description><![CDATA[<p>Welcome to my first blog! I'm glad you're here. Maybe you're asking why I'm doing this?</p>
<blockquote>
<p>I'm very bad at writing...</p>
</blockquote>
<p>So I decided to be better at my writing skills and I think I can improve a lot with blogging! 😎</p>
<p>If you're asking yourself where I shot this image,</p>]]></description><link>https://blog.reffascode.de/hello-world/</link><guid isPermaLink="false">5b6c60762eb390383fd0fc80</guid><category><![CDATA[Math]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Society]]></category><dc:creator><![CDATA[Bilal Karim Reffas]]></dc:creator><pubDate>Thu, 09 Aug 2018 15:58:52 GMT</pubDate><media:content url="https://blog.reffascode.de/content/images/2018/08/IMG_0878.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.reffascode.de/content/images/2018/08/IMG_0878.jpg" alt="Hello World!"><p>Welcome to my first blog! I'm glad you're here. Maybe you're asking why I'm doing this?</p>
<blockquote>
<p>I'm very bad at writing...</p>
</blockquote>
<p>So I decided to be better at my writing skills and I think I can improve a lot with blogging! 😎</p>
<p>If you're asking yourself where I shot this image, it was in Marrakech Morocco on the famous place Djemaa el fna in fall 2017.</p>
<p>I will mostly write in english or german and the topics are math, machine learning, software engineering and society.</p>
<p>Thank you so much that you follow me on this journey.</p>
]]></content:encoded></item></channel></rss>