שינויים
באופן כללי זו שיטה קלה יותר. אחד מהחסרונות שלה הוא שקשה למצוא באמצעותה את מספר הפתרונות, מה שעושים ע״י בדיקת היתכנות הסוג השני לכל תושב שניחשנו לו סוג.
:'''דוגמה 3:''' האורח נתקל בתושבים <math>A,B,C</math>, שאינם מרגלים. <math>A</math> טוען ש־<math>B</math> נוכל וגם <math>C</math> אביר, כלומר <math>A\leftrightarrow(\neg B\and C)=1</math>. אם ננחש ש־<math>A</math> אביר נקבל פתרון יחיד, אך אם ננחש שהוא נוכל נקבל ש־<math>\neg B\and C=0</math>. במקרה הזה אפשר לנחש ש־<math>B</math> נוכל (ולקבל פתרון יחיד) או אביר (ולקבל שני פתרונות). מספר הפתרונות הוא אם כן <math>\underbrace1_{A\text{ is a knight}}+\underbraceoverbrace{\underbrace1_{B\text{ is a knave}}+\underbrace2_{B\text{ is a knight}}}_^{A\text{ is a knave}}=4</math>. המערכת אינה לינארית ולכן אינה פתירה לפני באמצעות משפט רושה–קפלי.
חיסרון מהותי יותר הוא ששינוי של <math>\mathbf b</math> דורש פתרון מחדש של הבעיה כולה. <!---->כמו כן, הפתרון לא נותן לנו את התובנות שקיבלנו מפתרון כמערכת אנו נעזר בפתרון באמצעות מערכת משוואות לינאריות, תובנות שיעזרו לנו בחידות שבהן שואלים שאלות. <!---->
=== חידות עם שאלות ===
''שאלה'' היא פסוק לוגי שאנחנו יכולים לבחור, תלוי בסוגים של תושבים והוא מהצורה <math>X_i\leftrightarrow P</math> עבור פסוק לוגי <math>P</math> כרצוננו. למשל, את השאלה "האם <math>X_2</math> אביר?" שמופנת ל־<math>X_1</math> נייצג בתור <math>X_1\leftrightarrow X_2</math>. נסמן כ־<math>n</math> את מספר התושבים ונניח שמותר לשאול עד <math>m</math> שאלות. נסמן <math>\mathbf q=\begin{pmatrix}Q_1\\\vdots\\Q_m\end{pmatrix}</math> כווקטור השאלות. ''תשובה'' תוגדר כערך בוליאני השקול לוגית לשאלה ששאלנו, ונסמן ב־<math>\mathbf br=\begin{pmatrix}b_1r_1\\\vdots\\b_mr_m\end{pmatrix}</math> את וקטור התשובות. <math>\mathbf x</math> מוגדר כמקודם. מההגדרות נובע שאם <math>\mathbf x</math> הפתרון הנכון אז <math>\mathbf q=\mathbf br</math>.
:'''דוגמה 4:''' יש 3 תושבים (<math>m=2,n=3</math> ), מותר לשאול עד 2 שאלות (<math>m=2</math>) ו־<math>X_3</math> טוען ש־<math>X_1</math> ו/או <math>X_2</math> אבירים, דהיינו <math>X_3\leftrightarrow(X_1\or X_2)=1</math>. וקטור השאלות <math>\mathbf q=\begin{pmatrix}X_1\leftrightarrow X_2\\X_1\leftrightarrow1\end{pmatrix}=\begin{pmatrix}X_1\leftrightarrow X_2\\X_1\end{pmatrix}</math> מאפשר לפתור את החידה – אם נניח, למשל, ש־<math>\mathbf br=\begin{pmatrix}0\\1\end{pmatrix}</math> אזי <math>\mathbf x=\begin{pmatrix}1\\0\\1\end{pmatrix}</math>, ובאופן כללי <math>\mathbf x=\begin{pmatrix}b_2r_2\\b_1r_1\leftrightarrow b_2r_2\\b_1r_1\or b_2r_2\end{pmatrix}</math>.
<!--חידה בסיסית מסוג זה תבקש למצוא שאלות כך שניתן יהיה להסיק את סוגם של כל התושבים. נוכיח שתמיד ניתן להסתפק בווקטור שאלות כך ש־<math>\forall i:\ \exists j:\ Q_i=X_j</math>: פתרון אפשרי יוגדר כפתרון <math>\mathbf x</math> שמקיים את העובדות הנתונות. כל פתרון אפשרי ייתן החידה פתירה, כלומר קיים וקטור שאלות <math>\mathbf q</math> כך שלכל וקטור תשובות <math>\mathbf r</math> מתאים קיים פתרון <math>\mathbf x</math> יחידהמקיים <math>\mathbf q=\mathbf r</math>. לפיכך, לכן אם יש <math>N</math> פתרונות אפשריים אז יש <math>N</math> אפשרויות ל־<math>\mathbf br</math>. החידה פתירהב־<math>\mathbf q</math> יש <math>m</math> שאלות ולכל אחת יש עד 2 תשובות אפשריות, לכן קיים יש עד <math>2^m</math> אפשרויות ל־<math>\mathbf qr</math> כך שלכל , דהיינו <math>N\le2^m</math>. עתה יהי <math>l</math> האורך המינימלי של וקטור שאלות מהצורה <math>\mathbf bq'=\begin{pmatrix}X_{i_1}\\\vdots\\X_{i_l}\end{pmatrix}</math> שפותר את החידה וצריך להוכיח ש־<math>l\le m</math> ניתן למצוא פתרון.
== חידות עם מרגלים ==