المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۱:عملی:سوال ۱۴

Horn-SAT

به هر عبارت منطقی که به صورت $OR$ تعدادی از متغیرها به صورت $x_i$ یا $\overline{x_i}$ باشد، یک جمله $(Clause)$ گفته می‌شود. مانند:

$$s_1=x_1 \vee \overline{x_2} \vee x_3 \vee x_4 \vee \overline{x_5}$$

جمله‌ی $Horn$ به جمله‌ای گفته می‌شود که در آن حداکثر یک متغیر به صورت بدون نقیض (یعنی به صورت $x_i$) ظاهر می‌شود و بقیه‌ی متغیر‌ها با نقیض (به صورت $\overline{x_j}$) ظاهر می‌شوند.

مسئله‌ی $Horn-SAT$ به این صورت تعریف می‌شود: تعدادی از جمله‌های $Horn$ با یکدیگر $AND$ شده‌اند، می‌خواهیم به متغیرها‌ی $x_1,x_2,...,x_n$ آن طوری مقادیر $true$ یا $false$ نسبت بدهیم که کل عبارت مقدار $true$‌ داشته باشد.

برنامه‌ای بنویسید که با دریافت یک عبارت $Horn$ (به صورت $AND$ تعدادی جمله‌ی $Horn$) مقادیر $true$ یا $false$ را طوری به متغیر‌ها $(x_1,x_2,...,x_n)$ نسبت دهد که کل عبارت مقدار $true$ بگیرد.

ورودی

در خط اول فایل به ترتیب دو عدد $n$ و $m$ ($n\leq 100,m\leq 1000$) وجود دارد که $n$ تعداد متغیرها است $(x_1,x_2,...,x_n)$ و $m$ تعداد جمله‌های $Horn$ در عبارت است.

بعد از خط اول $m$ خط در فایل ورودی وجود دارد؛ در خط $i$ ام در ابتدا عدد $l_i$ $(l_i\leq 100)$ تعداد متغیرها در جمله‌ی $i$ ام آمده و بعد از آن $l_i$ عدد به صورت $j$ یا $-j$ آمده که $j$ نشان‌دهنده‌ی $x_j$ و $-j$ نشان‌دهنده‌ی $\overline{x_j}$ است.

خروجی

اگر مسئله جواب ندارد، در خط اول خروجی پیغام No Solution را بنویسید. در غیر این صورت فایل شامل $n$ خط خواهد بود که در خط $i$ ام مقدار $T$ ( معادل با $x_i=true$) یا مقدار $F$ (معادل با $x_i=false$) خواهد بود.

ورودي و خروجي نمونه

(معادل با عبارت ورودی $( \overline{}x_1 \vee \overline{x_2} \vee x_3) \land (x_1 \vee \overline{x_2}) \land (x_3 \vee \overline{x_2}) \land (x_3) \land (\overline{x_4})$ و خروجی $x_1=true,x_2=false,x_3=true,x_4=false$)

ورودي نمونه خروجي نمونه
4 5
3 -1 -2 3
2 1 -2
2 3 -2
1 3
1 -4
T
F
T
F

ابزار صفحه