Just a sentence
Time Limit: 10 Seconds Memory Limit: 32768 KB
میخواهیم با یک روش ساده یک برنامه تولید کنیم که جمله طبیعی ایجاد کند. البته مدلهای واقعی این مساله خیلی علمی تر و واقعیتر هستند و ایدهای که در این مساله مطرح میشود خیلی سادهانگارانه است.
فرض کنید کلمه اول و آخر یک جمله را میدانید و میخواهید جمله ای ایجاد کنید که تعدادی کلمه بین این کلمه اول و آخر دارد. برای اینکار دو ابزار احتمالاتی نیاز دارید:
احتمال ظهور هر کلمه ( که به آن احتمال unigram میگویند)
احتمال ظهور هر کلمه به شرط کلمه قبلی ( که به آن احتمال bigram نیز میگویند)
با استفاده از ایندو میتوانیم احتمال ظهور یک جمله ـ با فرض وابستگی هر کلمه به کلمه قبلی در جمله و استقلال آن از کلمات دیگرـ به صورت زیر تعریف نماییم:
با استفاده از این تعریف و ماتریس احتمالات (هردوی الف و ب) و با گرفتن کلمه اول و آخر، محتمل ترین جمله (کلمات با ترتیب) را با احتمال تعریف شده در بالا بدست بیاورید. (توجه کنید که در ماتریس، با برابر نیست)
Input
ورودی شامل چند تست است، در خط اول ورودی تعداد تستها T داده شده است. ()
در هرتست در خط اول N داده میشود که تعداد کل کلمات زبان است. ()
در خط بعد، ابتدا تمام کلمات (با space جدا شده) داده میشود و سپس در یک خط احتمال ظهور هر کلمه داده میشود. همچنین در یک خط اندیس کلمه اول و اندیس کلمه آخر (اندیسها از ۱ شروع میشوند) جمله داده میشود. در N خط بعد، احتمال ظهور هر کلمه به شرط کلمه قبلی داده میشود.
Output
در خروجی به ازای هر تست کلمات جمله را به ترتیب در خروجی بنویسید
Sample Input
1 5 My name is Mohsen ! 0.3 0.18 0.21 0.30 0.01 1 5 0.20 0.20 0.20 0.20 0.20 0.996 0.001 0.001 0.001 0.001 0.001 0.996 0.001 0.001 0.001 0.001 0.001 0.996 0.001 0.001 0.001 0.001 0.001 0.599 0.398
Sample Output
My name is Mohsen !Submit