<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Peyman Ghaderkourehpaz</title><link>https://virgool.ir/feed/@payamprivate</link><description></description><language>fa</language><pubDate>2026-11-10 19:16:59</pubDate><image><url>https://files.virgool.ir/upload/users/2483903/avatar/avatar.png</url><title>Peyman Ghaderkourehpaz</title><link>https://virgool.ir/@payamprivate</link></image><item><title>زنجیره‌های مارکوف جذب‌کننده، ماتریس گذار و افق زمانی در تحلیل فاز خروج (Bearoff) تخته‌نرد</title><link>https://virgool.ir/@payamprivate/absorbing-markov-chains-backgammon-bearoff-vghhzgpjo38q</link><description>مقدمه و صورت‌بندی فضاهای حالت تصادفی در بازی‌های رومیزیدر نظریه بازی‌های ریاضی و محاسباتی، کلاس بازی‌های مجموع-صفر دو نفره با اطلاعات کامل اما دارای ماهیت تصادفی (Two-Player Zero-Sum Stochastic Games with Perfect Information)، چالش‌های محاسباتی متمایزی در مقایسه با بازی‌های معین مانند شطرنج و دوز ارائه می‌دهند. در این سیستم‌ها، هر مرحله از فرایند انتقال حالت نه تنها وابسته به تصمیم عقلایی بازیکنان (Rational Agent Decisions) است، بلکه مستقیماً تحت تأثیر یک بردار متغیرهای تصادفی با توزیع احتمالی مشخص قرار دارد. بازی کلاسیک تخته‌نرد (Backgammon) به عنوان کهن‌ترین نمونه از فرایندهای تصادفی کنترل‌شده، یکی از دقیق‌ترین بسترهای ریاضی برای مطالعه مدل‌های زنجیره مارکوف زمان‌گسسته (Discrete-Time Markov Chains - DTMC) و فرایندهای تصمیم‌گیری مارکوف (MDP) به شمار می‌رود.دینامیک تخته‌نرد به طور کلاسیک به دو فاز مجزا تفکیک می‌شود: فاز تماس (Contact Phase) که در آن مهره‌های دو بازیکن در یک ماتریس تقاطعی برهم‌کنش دارند و امکان زدن مهره (Hitting) و مسدودسازی (Blocking) وجود دارد؛ و فاز بدون برخورد یا فاز خروج (Bearoff Phase) که پس از عبور کامل مهره‌های حریفین رخ می‌دهد. در فاز پایانی خروج، سیستم به طور کامل از یک بازی رقابتی دوطرفه کوپل‌شده به دو فرایند تصادفی مستقل تک‌بازیکنه (Decoupled Single-Agent MDP) تبدیل می‌شود که در آن هدف هر عامل، کمینه‌سازی امید ریاضی زمان رسیدن به حالت جذب (Absorbing State) یعنی خروج تمامی مهره‌ها از صفحه است. در این مقاله، ساختار توپولوژیک و جبری زنجیره‌های مارکوف جذب‌کننده در فاز Bearoff، ماتریس‌های گذار کانونی، ماتریس بنیادی و الگوریتم‌های برنامه‌ریزی پویای جدول پایه خروج (Bearoff Tablebases) را مورد کالبدشکافی دقیق ریاضی قرار می‌دهیم.ساختار ترکیبیاتی و جبری زنجیره‌های مارکوف جذب‌کنندهفرض کنید فضای حالت فاز خروج برای یک بازیکن با بردار حالت s = (c_1, c_2, c_3, c_4, c_5, c_6) مدل‌سازی شود، به طوری که c_i در بازه {0, 1, ..., 15} نشان‌دهنده تعداد مهره‌های مستقر در خانه i-ام (از خانه ۱ تا ۶) باشد، با قید مجموع c_i کمتر یا مساوی ۱۵. در این ساختار، حالت جذب یکتا که با s_0 = (0, 0, 0, 0, 0, 0) نشان داده می‌شود، وضعیتی است که تمام مهره‌ها از صفحه بازی خارج شده‌اند. اندازه دقیق این فضای حالت گسسته از طریق فرمول ترکیبیاتی ستاره‌ها و میله‌ها (Stars and Bars) برای قرار دادن حداکثر ۱۵ مهره در ۶ خانه قابل محاسبه است:|S| = Σ C(k + 6 - 1, 6 - 1) = C(15 + 6, 6) = C(21, 6) = 54,264این تعداد حالت (۵۴٬۲۶۴ حالت متمایز)، از نظر پیچیدگی محاسباتی به اندازه کافی محدود است که امکان حل دقیق و تحلیلی تمام بردارها را از طریق ماتریس‌های تنک (Sparse Matrices) و برنامه‌ریزی پویا فراهم آورد، اما به اندازه‌ای بزرگ و متراکم است که ساختار ماتریس گذار آن رفتارهای بسیار غنی از نظریه ارگودیسیتی و ماتریس‌های پوزیتیو-شبه‌معین به نمایش بگذارد.یک زنجیره مارکوف با فضای حالت S جذب‌کننده نامیده می‌شود اگر حداقل یک حالت جذب وجود داشته باشد و از هر حالت گذرا (Transient State) بتوان در تعداد متناهی گام با احتمال اکیداً مثبت به حالت جذب رسید. ماتریس گذار P برای چنین سیستمی را می‌توان در فرم کانونی (Canonical Form) بلوکی زیر بازنویسی کرد:P = [ [Q, R], [0, I_r] ]در این فرم بلوکی، Q یک ماتریس مربعی از مرتبه t × t (که در اینجا t = 54,263 حالت گذرا است) بوده و احتمال انتقال میان حالات گذرا را نشان می‌دهد. ماتریس R از مرتبه t × r نمایانگر احتمال انتقال مستقیم از حالات گذرا به حالات جذب است (با r = 1 در فاز خروج ساده)، و I_r ماتریس همانی مرتبه r است که بازتاب‌دهنده ویژگی پایدار حالت جذب می‌باشد. ماتریس صفر در گوشه پایین سمت چپ نیز مؤید این است که فرار از حالت جذب غیرممکن است.ماتریس بنیادی و بردار امید ریاضی افق خروجویژگی بنیادین ماتریس استوکاستیک فرعی Q این است که با افزایش توان‌های متوالی k -&gt; ∞، مقادیر Q^k -&gt; 0 همگرا می‌شوند. این قضیه از این واقعیت سرچشمه می‌گیرد که شعاع طیفی ρ(Q) = max |λ_i| &lt; 1 اکیداً کمتر از یک است. این ویژگی وجود معکوس ماتریس زیر موسوم به ماتریس بنیادی (Fundamental Matrix) را تضمین می‌کند:N = (I_t - Q)^(-1) = Σ_{k=0}^{∞} Q^kدرایه‌های ماتریس بنیادی N_{ij} مفهوم فیزیکی بسیار دقیقی در تئوری کنترل دارند: N_{ij} امید ریاضی تعداد دفعاتی است که زنجیره مارکوف در حالت گذرای s_j سپری می‌کند، مشروط بر اینکه سیستم از حالت s_i آغاز شده باشد. بنابراین، اگر بردار ستونی 1 را به عنوان بردار یک‌ها با بعد t تعریف نماییم، بردار زمان مورد انتظار تا جذب (Expected Time to Absorption) به صورت زیر به دست می‌آید:τ = N 1 = (I_t - Q)^(-1) 1مولفه i-ام این بردار، یعنی τ_i = E[T | S_0 = s_i]، امید ریاضی دقیق تعداد پرتاب‌های مورد نیاز (Expected Rolls) برای خروج کامل تمام مهره‌ها از حالت s_i را مشخص می‌کند. علاوه بر امید ریاضی مرتبه اول، گشتاور مرتبه دوم و واریانس تعداد پرتاب‌ها نیز از طریق عملگرهای برداری ماتریس بنیادی قابل استخراج است:v = (2N - I_t) τ - τ_sqکه در آن τ_sq نشان‌دهنده ضرب هادامارد بردار τ در خودش است. واریانس حاصل، معیار دقیق عدم‌قطعیت و نوسان (Volatility) در مسابقه خروج را تعیین می‌کند که مستقیماً در تصمیم‌گیری‌های مربوط به مکعب دوبرابرکننده (Doubling Cube Decisions) و محاسبه نقاط پذیرش کیوب (Take-Points) به کار گرفته می‌شود.فضای نمونه پرتاب تاس و اپراتور بل‌من برای بهینه‌سازی سیاستدر تخته‌نرد کلاسیک، در هر نوبت دو تاس ۶ وجهی مستقل با توزیع یکنواخت پرتاب می‌شوند. کل فضای برآمدهای ممکن تاس برابر با ۶ × ۶ = ۳۶ است. از آنجا که ترتیب تاس‌ها در خروجی فیزیکی تاثیری ندارد، این ۳۶ برآمد به ۲۱ نتیجه نامتقارن متمایز کاهش می‌یابند:۱۵ پرتاب غیرجفت (مانند ۶-۵، ۴-۱ و غیره) با احتمال وقوع P(d) = 2/36 = 1/18 ≈ 0.0556 که در آن بازیکن امکان ۲ حرکت دارد.۶ پرتاب جفت (مانند ۶-۶، ۵-۵، ۱-۱) با احتمال وقوع P(d) = 1/36 ≈ 0.0278 که بر اساس قوانین بازی، مقدار تاس دوبرابر شده و بازیکن ۴ حرکت با اندازه مساوی انجام می‌دهد.یک عامل عقلایی در مواجهه با هر پرتاب d در D و حالت s در S، مجموعه‌ای از حرکات مجاز A(s, d) در اختیار دارد. هر اقدام مجاز a در A(s, d) حالت فعلی s را به یک حالت قطعی جدید s&#39; = f(s, a) منتقل می‌سازد. تابع ارزش بهینه V*(s) که نشان‌دهنده کمینه امید ریاضی پرتاب‌های باقی‌مانده است، معادله مشهور بلمن (Bellman Optimality Equation) را ارضا می‌کند:V*(s) = 1 + Σ_{d in D} P(d) min_{a in A(s, d)} V*(f(s, a))با شرط مرزی مشخص برای حالت جذب: V*(s_0) = 0. از آنجا که تمام حرکات در فاز Bearoff مهره‌ها را به جلو می‌رانند یا از صفحه خارج می‌کنند، هیچ چرخه‌ای در گراف حالت وجود ندارد (s&#39; همواره پیپ کانت یا مجموع موقعیت کمتری نسبت به s دارد). این ساختار بدون چرخه مستقیم (Directed Acyclic Graph - DAG) اثبات می‌کند که سیستم را می‌توان بدون نیاز به تکرار ماتریسی پیچیده، از طریق مرتب‌سازی توپولوژیک بر اساس مجموع پیپ (Pip Count) و برنامه‌ریزی پویای بازگشتی در زمان O(|S| · |D|) به طور دقیق حل نمود.پیاده‌سازی الگوریتم تولید پایگاه داده خروج (Bearoff Solver)کد پایتون زیر، ساختار پایه‌ای یک حل‌کننده دقیق جدول خروج مبتنی بر اصل بلمن و برنامه‌ریزی پویا را به تصویر می‌کشد:import numpy as np&#xA;&#xA;class BearoffTablebaseSolver:&#xA;    def __init__(self, max_checkers=15, max_points=6):&#xA;        self.max_checkers = max_checkers&#xA;        self.max_points = max_points&#xA;        self.dice_outcomes = self._generate_dice_distribution()&#xA;        self.v_table = {}  # memoization table: state_tuple -&gt; float (expected rolls)&#xA;        self.v_table[(0,) * max_points] = 0.0&#xA;&#xA;    def _generate_dice_distribution(self):&#xA;        outcomes = []&#xA;        for d1 in range(1, 7):&#xA;            for d2 in range(d1, 7):&#xA;                prob = (1.0 / 36.0) if d1 == d2 else (2.0 / 36.0)&#xA;                moves = [d1] * 4 if d1 == d2 else [d1, d2]&#xA;                outcomes.append((prob, moves))&#xA;        return outcomes&#xA;&#xA;    def get_legal_transitions(self, state, moves):&#xA;        # state is tuple of checker counts on points [1, 2, 3, 4, 5, 6]&#xA;        current_states = {state}&#xA;        for die in moves:&#xA;            next_states = set()&#xA;            for st in current_states:&#xA;                transitions = self._apply_single_die(st, die)&#xA;                next_states.update(transitions)&#xA;            current_states = next_states&#xA;        return list(current_states)&#xA;&#xA;    def _apply_single_die(self, state, die):&#xA;        res = []&#xA;        st = list(state)&#xA;        # Check if direct bearoff or move is possible&#xA;        p_idx = die - 1&#xA;        if p_idx &lt; self.max_points and st[p_idx] &gt; 0:&#xA;            nxt = list(st)&#xA;            nxt[p_idx] -= 1&#xA;            res.append(tuple(nxt))&#xA;        # Move within board&#xA;        for p in range(die, self.max_points):&#xA;            if st[p] &gt; 0:&#xA;                nxt = list(st)&#xA;                nxt[p] -= 1&#xA;                nxt[p - die] += 1&#xA;                res.append(tuple(nxt))&#xA;        # Over-bearoff rule&#xA;        if not res:&#xA;            highest = max([idx for idx, c in enumerate(st) if c &gt; 0], default=-1)&#xA;            if highest &gt;= 0 and highest &lt; p_idx:&#xA;                nxt = list(st)&#xA;                nxt[highest] -= 1&#xA;                res.append(tuple(nxt))&#xA;        return res if res else [state]&#xA;&#xA;    def solve_state(self, state):&#xA;        if state in self.v_table:&#xA;            return self.v_table[state]&#xA;        &#xA;        expected_cost = 1.0&#xA;        for prob, moves in self.dice_outcomes:&#xA;            candidates = self.get_legal_transitions(state, moves)&#xA;            min_sub_cost = min(self.solve_state(cand) for cand in candidates)&#xA;            expected_cost += prob * min_sub_cost&#xA;            &#xA;        self.v_table[state] = expected_cost&#xA;        return expected_cost&#xA;حساسیت توابع ارزش نسبت به ویژگی‌های توزیع تصادفی تاسیکی از پایه‌ای‌ترین پیش‌فرض‌های نظریه استوکاستیک در بازی‌های تخته‌ای، فرض عدم اریب بودن (Unbiasedness) و استقلال آماری توزیع پرتاب‌ها است. با این حال، در شبیه‌سازها و پلتفرم‌های ابری آنلاین، خطاهای تصادفی‌سازی و اریب‌های جزئی ژنراتورهای اعداد شبه‌تصادفی (PRNG) می‌توانند اثرات شدیدی بر ارزش‌های انتظاری بگذارند. به عنوان مثال، اگر احتمال تاس جفت از مقدار تئوریک ۶/۳۶ = ۱/۶ تنها به میزان ۱ درصد انحراف داشته باشد، تابع ارزش V*(s) در موقعیت‌های عمیق خروج تا بیش از ۴ درصد شیفت نامتقارن نشان می‌دهد.به همین سبب، در مهندسی پلتفرم‌های محاسباتی مدرن بازی‌های فکری، استفاده از سیستم‌های تاییدپذیر تصادفی‌سازی شفاف و معماری‌های بر مبنای رمزنگاری الزامی است. الگوریتم‌های اعتبارسنجی مدرن مانند سیستم‌های مبتنی بر توابع هش با تعهد رمزنگاری (Commitment Schemes) و استانداردهای اعتبارسنجی تاس منصفانه و تصادفی نشان می‌دهند که چگونه می‌توان از طریق پروتکل‌های اثبات با دانش صفر یا جفت‌های بذر کلاینت-سرور (Client-Server Seed Pairs)، اطمینان یافت که پرتاب‌ها منطبق بر توزیع یکنواخت گسسته خالص بوده و هیچ گونه سوگیری آماری در طول زنجیره‌های مارکوف چندمیلیونی رخ نمی‌دهد.همگرایی با تقریب‌گرهای شبکه‌های عصبی عمیق (TD-Gammon و AlphaZero)در دهه‌های گذشته، یادگیری تقویتی تفاوت زمانی (Temporal Difference Learning) که توسط جرالد تسائورو در TD-Gammon به اوج رسید، نشان داد که شبکه‌های پرسپترون چندلایه می‌توانند توابع ارزش بسیار دقیقی بدون پایگاه داده صریح فرا گیرند. با این وجود، مطالعات تحلیلی بر روی خطای تقریب در فاز Bearoff آشکار می‌سازد که شبکه‌های عصبی پیوسته در تقریب زدن ناپیوستگی‌های تند بردار خروج با چالش مواجه می‌شوند. در موقعیت‌های خاص با تعداد مهره‌های اندک (پیکربندی‌های ۲ یا ۳ مهره)، خطای تقریب شبکه عصبی در محاسبه شانس گامان (Gammon Probability) می‌تواند تا ۱۲ درصد انحراف نسبت به حل دقیق ماتریس بنیادی ایجاد کند.از این رو، موتورهای مدرن تخته‌نرد نظیر GNU Backgammon و WildBG رویکردی ترکیبی (Hybrid Architecture) اتخاذ می‌کنند: در فازهای پیچیده تماس و مانور استراتژیک، از تقریب‌گرهای شبکه‌های عصبی عمیق کانوولوشنال و ترنسفورمر بهره می‌گیرند، اما به محض ورود موقعیت به زیرفضای فاز بدون برخورد، کنترل مستقیماً به پایگاه داده از پیش‌محاسبه‌شده دقیق (Exact Tablebase Lookups) حاصل از حل معادلات زنجیره مارکوف جذب‌کننده واگذار می‌شود تا خطای تصمیم‌گیری به صفر مطلق کاهش یابد.نتیجه‌گیری و افق‌های پژوهشیکالبدشکافی فاز پایانی تخته‌نرد از منظر زنجیره‌های مارکوف جذب‌کننده، پیوند بنیادین میان احتمالات کلاسیک، تحلیل طیفی ماتریس‌ها و بهینه‌سازی تصادفی بل‌من را نمایان می‌سازد. با فرموله کردن حالات به صورت ماتریس‌های متعارف و بهره‌گیری از ماتریس بنیادی، می‌توان تمامی پارامترهای بازی شامل امید ریاضی پرتاب‌ها، واریانس، احتمال خروج زودتر از حریف و مقادیر بهینه مکعب کیوب را با دقت تحلیلی مطلق استخراج نمود. این بینش‌های نظری، زیربنای مستحکمی برای ارزیابی کیفی موتورهای هوش مصنوعی و طراحی سیستم‌های مدرن تحلیلی در بازی‌های استراتژیک فراهم می‌آورند.</description><category>Peyman Ghaderkourehpaz</category><author>Peyman Ghaderkourehpaz</author><pubDate>Tue, 06 Oct 2026 16:01:57 +0330</pubDate></item><item><title>معماری کلاینت‌های بازی‌های نوبتی با تأخیر صفر: چرا رندر مستقیم Canvas از درخت DOM سریع‌تر است؟</title><link>https://virgool.ir/@payamprivate/معماری-کلاینت-های-بازی-های-نوبتی-با-تأخیر-صفر-چرا-رندر-مستقیم-canvas-از-درخت-dom-سریع-تر-است-dunojncwiwyn</link><description>در توسعه بازی‌های رومیزی و نوبتی (Turn-Based Strategy) برای وب و موبایل، بزرگ‌ترین خطای معماری که مهندسان تازه‌کار مرتکب می‌شوند، شبیه‌سازی خانه‌های تخته و مهره‌ها با استفاده از تگ‌های سلسله‌مراتبی DOM (مانند دایوهای تو در تو در وب یا درخت ویجت‌های سنگین در فریم‌ورک‌های رابط کاربری) است. در نگاه نخست، به نظر می‌رسد مدیریت رویدادهای کلیک و استایل‌دهی مهره‌ها با CSS یا کامپوننت‌های آماده ساده‌تر است؛ اما به محض اضافه شدن انیمیشن‌های فیزیکی کشیدن و رها کردن (Drag-and-Drop) و نرخ نوسازی ۱۲۰ هرتز (120Hz ProMotion)، این رویکرد دچار لکنت شدید، لگ ورودی و افت فریم می‌شود.۱. مشکل پدیده Layout Thrashing و هزینه Reflowهنگامی که کاربر یک مهره را روی صفحه لمس کرده و با انگشت حرکت می‌دهد، در هر فریم (هر ۸.۳ میلی‌ثانیه در نمایشگرهای ۱۲۰ هرتز)، موقعیت مکانی مهره (مختصات X و Y) تغییر می‌کند:اگر مهره یک المان DOM باشد، تغییر دادن مداوم ویژگی‌های top، left یا حتی transform باعث می‌شود مرورگر وارد فازهای پی‌درپی محاسبه مجدد استایل (Style Recalculation)، بازچینی هندسی (Layout/Reflow) و نقاشی لایه‌ای (Repaint) شود.با افزایش تعداد مهره‌ها روی تخته (مثلاً ۳۰ مهره در تخته‌نرد یا ۲۴ مهره در چکرز)، هر بار حرکت دادن یک مهره می‌تواند به صورت ناخواسته مرزهای محاسباتی کل درخت المان‌ها را بی‌اعتبار (Invalidate) کند.۲. معماری رندر مستقیم روی تک-بوم (Single Canvas Pipeline)راه‌حل حرفه‌ای و استاندارد در موتورهای گرافیکی مدرن، استفاده از یک بوم دوبعدی اختصاصی (2D Canvas در وب یا CustomPainter در فلاتر) متصل به GPU است. در این معماری:کل تخته تنها یک المان DOM است: مرورگر هیچ دانشی از وجود مهره‌ها، مثلث‌ها یا تاس‌ها ندارد و هیچ نودی در درخت DOM تغییر نمی‌کند.جداسازی لایه‌های ایستا و پویا: صفحه به دو بافر تصویر تقسیم می‌شود: بافر زیرین ایستا (Static Layer شامل بافت چوب، حاشیه‌ها و مثلث‌ها که یک‌بار رندر شده و در حافظه گرافیکی کش می‌شود) و بافر پویا (Dynamic Layer شامل مهره در حال جابجایی و افکت‌های بصری).رندر مستقیم در پایپ‌لاین GPU: در زمان کشیدن مهره، تنها همان لایه پویا با دستورات سریع ماتریسی دوباره رسم می‌شود که مصرف حافظه پردازنده اصلی (CPU) را به کمتر از ۳ درصد کاهش می‌دهد.۳. ریاضیات چاه‌های گرانش مغناطیسی (Magnetic Gravity Wells)یکی از بزرگ‌ترین چالش‌های تجربه کاربری روی صفحات لمسی موبایل، مسدود شدن دید بازیکن توسط انگشت شست است. اگر کلاینت دقیقاً مرکز مهره را زیر نوک انگشت قرار دهد، بازیکن نمی‌بیند مهره دقیقاً روی کدام خانه قرار گرفته است. علاوه بر این، ابعاد یک خانه تخته‌نرد معمولاً کمتر از ۴۰ پیکسل است، در حالی که میانگین سطح تماس انگشت انسان حدود ۴۸ تا ۵۶ پیکسل است.برای حل این مشکل، از الگوریتم چاه‌های گرانش مغناطیسی استفاده می‌شود:function findSnappingPoint(fingerX, fingerY, legalPoints) {&#xA;    let closestPoint = null;&#xA;    let minDistance = 65; // شعاع جاذبه بر حسب پیکسل&#xA;    for (const point of legalPoints) {&#xA;        const dist = Math.hypot(fingerX - point.centerX, fingerY - point.centerY);&#xA;        if (dist &lt; minDistance) {&#xA;            minDistance = dist;&#xA;            closestPoint = point;&#xA;        }&#xA;    }&#xA;    return closestPoint;&#xA;}هنگامی که مهره به محدوده یک خانه مجاز نزدیک می‌شود، با یک منحنی کشسانی نرم (Spring Physics) به سمت مرکز خانه کشیده می‌شود؛ این طراحی ارگونومیک، خطای لمسی کاربر را در بازی‌های پرسرعت به صفر می‌رساند.۴. همگام‌سازی وضعیت خوش‌بینانه (Optimistic State Prediction)در بازی‌های دونفره آنلاین، نباید منتظر تأیید سرور نشست تا مهره در مقصد بنشیند. کلاینت با موتور اعتبارسنجی محلی (Local Rule Validator)، بلافاصله پس از رها شدن مهره، حرکت را روی بوم اعمال می‌کند و همزمان بسته شبکه را ارسال می‌کند. تنها در صورت بروز مغایرت بسیار نادر، انیمیشن بازگشت فنری (Spring Rollback) اجرا می‌شود.نتیجه‌گیریسرعت و حس طبیعی قطعات در یک بازی دیجیتال، حاصل جادوی فریم‌ورک‌ها نیست؛ بلکه محصول تصمیمات مهندسی آگاهانه است: عبور از محدودیت‌های DOM، بهره‌گیری از رندر مستقیم Canvas روی پردازنده گرافیکی، و پیاده‌سازی ریاضیات دقیق تلورانس لمسی.</description><category>Peyman Ghaderkourehpaz</category><author>Peyman Ghaderkourehpaz</author><pubDate>Sun, 04 Oct 2026 00:01:41 +0330</pubDate></item><item><title>تحلیل ریاضی مکعب دو برابر کننده (Doubling Cube) در تخته‌نرد: از نظریه احتمالات تا شبکه‌های عصبی</title><link>https://virgool.ir/@payamprivate/doubling-cube-mathematics-game-theory-fisphpyb9axc</link><description>در نگاه عمومی و عامیانه، تخته‌نرد اغلب یک بازی متکی بر شانس تاس پنداشته می‌شود. اما برای هر ریاضیدان، مهندس نرم‌افزار و تحلیل‌گر نظریه بازی‌ها، تخته‌نرد یکی از پیچیده‌ترین و زیباترین سیستم‌های تصادفی با اطلاعات کامل (Stochastic Perfect Information) در تاریخ است. در این میان، یک ابداع مکانیکی ساده در دهه ۱۹۲۰ در کلوپ‌های نیویورک — مکعب دو برابر کننده یا Doubling Cube — ماهیت این بازی ۵۰۰۰ ساله را برای همیشه از یک مسابقه مسافتی ساده (Race) به یک آزمایشگاه زنده برای ارزش مورد انتظار (Expected Value) و اقتصاد تصمیم‌گیری تبدیل کرد.۱. مکعب دو برابر کننده چیست و چگونه بازی را متحول کرد؟مکعب دو برابر کننده یک تاس ۶ وجهی بزرگتر با اعداد ۲، ۴، ۸، ۱۶، ۳۲ و ۶۴ است. در ابتدای بازی، مکعب در وسط تخته با عدد ۶۴ رو به بالا (معادل ضریب ۱) قرار دارد و متعلق به هیچ‌یک از دو بازیکن نیست. در ابتدای هر نوبت، پیش از پرتاب تاس، بازیکنی که احساس برتری می‌کند می‌تواند مکعب را به حریف پیشنهاد دهد و شرط بازی را دو برابر کند.در این لحظه، حریف دو انتخاب مطلق دارد:انصراف (Drop / Pass): بلافاصله بازی را واگذار کند و ۱ امتیاز (یا ارزش فعلی مکعب) را بپردازد.پذیرش (Take): پیشنهاد دو برابر شدن را بپذیرد، بازی را با شرط ۲ برابر ادامه دهد و مالکیت فیزیکی مکعب را از آن خود کند.۲. استخراج ریاضی نقطه پذیرش (Take Point)یکی از شگفت‌انگیزترین نتایج نظریه بازی‌ها در تخته‌نرد، مفهوم «نقطه پذیرش» (Take Point) است: حداقل شانس بردی که یک بازیکن نیاز دارد تا پذیرش مکعب برای او از نظر ریاضی عقلانی باشد.بیایید این مقدار را از طریق معادله امید ریاضی (Expected Value) محاسبه کنیم:فرض کنید شانس برد شما در موقعیت فعلی برابر با p باشد. در نتیجه شانس باخت شما 1 - p خواهد بود (برای سادگی در این مرحله از گامون و مارس صرف‌نظر می‌کنیم).اگر پیشنهاد دو برابر شدن را رد کنید، زیان شما قطعی است:EV(Drop) = -1.0اگر پیشنهاد را بپذیرید، ارزش مورد انتظار شما برابر است با:EV(Take) = (p × (+2)) + ((1 - p) × (-2)) = 2p - 2 + 2p = 4p - 2برای اینکه پذیرش مکعب از رد کردن آن بهتر (یا حداقل برابر) باشد، باید داشته باشیم:EV(Take) ≥ EV(Drop)4p - 2 ≥ -14p ≥ 1p ≥ 0.25 (25%)نتیجه شگفت‌انگیز: شما تنها به ۲۵٪ شانس برد نیاز دارید تا پذیرش مکعب از نظر ریاضی کاملاً توجیه‌پذیر باشد! بازیکنان مبتدی اغلب تصور می‌کنند که با شانس برد زیر ۵۰٪ باید انصراف دهند، در حالی که واگذاری یک بازی با شانس برد ۲۶٪ به معنای دور ریختن ارزش و زیان درازمدت در برابر قوانین احتمالات است.۳. فراتر از مدل ساده: ارزش مالکیت مکعب (Cube Ownership)معادله ۲۵٪ بر پایه یک فرض ساده عمل می‌کند: اینکه مکعب تا انتهای بازی مجدداً دو برابر نشود. اما در دنیای واقعی، بازیکنی که مکعب را پذیرفته، تنها کسی است که در ادامه بازی حق «دو برابر کردن مجدد» (Redouble) را در اختیار دارد.این حق مالکیت در بازارهای مالی و ریاضیات کاربردی دقیقاً معادل یک «اختیار معامله آمریکایی» (American Option) است. این اختیار به بازیکن اجازه می‌دهد در صورت بازگشت ورق بازی، حریف را با ضریب ۴ تحت فشار بگذارد. به همین دلیل:در موقعیت‌های با نوسان پایین (مانند انتهای مسابقه یا Bearoff)، نقطه پذیرش واقعی نزدیک به ۲۵٪ باقی می‌ماند.در موقعیت‌های پیچیده با پویایی بالا (Complex Contact Positions)، ارزش اختیار مکعب باعث می‌شود که نقطه پذیرش تا حدود ۲۱.۵٪ تا ۲۲٪ کاهش یابد. یعنی حتی با ۲۲٪ شانس برد نیز پذیرش مکعب بهینه است.۴. ریسک گامون (Gammon Volatility) و خطای تصمیم‌گیریتخته‌نرد تنها بردن یا باختن عادی نیست؛ باخت با مارس (گامون) ارزش باخت را دو برابر و باخت با مارس سیاه (بک‌گامون) آن را سه برابر می‌کند. اینجاست که ماتریس تصمیم‌گیری وارد فضای غیرخطی می‌شود:اگر حریف شانس بالایی برای گامون کردن شما داشته باشد، فرمول نقطه پذیرش به شکل زیر تعدیل می‌شود:p_live = (1 + L_g) / (4 + 2W_g + 2L_g)که در آن W_g نرخ گامون شما و L_g نرخ گامون حریف است. یک بازیکن حرفه‌ای و موتورهای تحلیلی مدرن، هر وضعیت تخته را نه صرفاً به عنوان یک درصد برد خام، بلکه به عنوان توزیعی از خروجی‌های احتمالی (برد عادی، گامون، بک‌گامون) ارزیابی می‌کنند.۵. انقلاب یادگیری تقویتی: از TD-Gammon تا موتورهای مدرندر سال ۱۹۹۲، جرالد تسائورو (Gerald Tesauro) در آزمایشگاه‌های IBM سیستم مشهور TD-Gammon را با استفاده از یادگیری تفاوت زمانی (Temporal Difference Learning یا TD(λ)) توسعه داد. برخلاف شطرنج که سال‌ها تحت سلطه درخت‌های جستجوی عمیق نظیر Minimax و هرس آلفا-بتا با تابع‌های ارزیابی دستی بود، تخته‌نرد به دلیل عامل تصادفی بودن پرتاب دو تاس (۲۱ برآمد متمایز در هر گام) دارای ضریب انشعاب (Branching Factor) عظیمی بود که جستجوی عمیق را غیرعملی می‌کرد.رویکرد تسائورو الهام‌بخش نسل مدرن هوش مصنوعی شد: یک شبکه عصبی چندلایه که با بازی کردن صدها هزار دست در برابر خود (Self-Play)، تابع ارزش وضعیت را تخمین می‌زد. این سیستم توانست خطاهای دیدگاهی انسان‌ها را در تصمیم‌گیری‌های مکعب تصحیح کند و استانداردهای جدیدی از نظریه بازگشایی و زمان بهینه پیشنهاد مکعب ارائه دهد.نتیجه‌گیری: تخته‌نرد به عنوان مدلی برای تصمیم‌گیری در عدم قطعیتمکعب دو برابر کننده در تخته‌نرد درس بزرگی برای علوم کامپیوتر و مدیریت ریسک دارد: در سیستم‌هایی که نوسان تصادفی وجود دارد، تصمیم‌گیری بهینه نه بر اساس خروجی قطعی یک سناریوی خاص، بلکه بر اساس توزیع تجمیعی ارزش مورد انتظار است. درک این تفاوت، مرز میان قمار بر پایه شانس و استراتژی متکی بر علم احتمالات است.</description><category>Peyman Ghaderkourehpaz</category><author>Peyman Ghaderkourehpaz</author><pubDate>Sat, 03 Oct 2026 11:30:19 +0330</pubDate></item><item><title>معرفی برنامه ی تقویم سال جدید برای اندروید</title><link>https://virgool.ir/@payamprivate/معرفی-برنامه-ی-تقویم-سال-جدید-برای-اندروید-p8o4dvn0djxa</link><description>این روزها دانلود و نصب تقویم برای گوشی های اندورید و IOS یا هر گجت دیگری بیشترین استفاده را در بین کاربران دستگاه‌های هوشمند دارد. در این مقاله قصد داریم یک برنامهٔ تقویم اندورید عالی با محتوایی کاربردی و مفید را به شما معرفی کنیم. تقویمی که مناسبت‌ها و تعطیلات را نشان می‌دهد، جهت قبله و اوقات شرعی، و رویدادهای شخصی را به شما یادآوری می‌کند. یک مبدل تاریخ است. به‌طورکلی این برنامهٔ کاربردی در تمام طول سال رفیق و یاور شما خواهد بود. همراه ما بمانید و با قابلیت‌های متنوع این برنامه کاربردی و مناسب آشنا شوید.یکی از بهترین برنامه های تقویم برای اندرویدبا شروع سال جدید تعداد کاربرانی که برای دانلود تقویم 1402 برای اندروید و سایر سیستم های عامل به اینترنت مراجعه می‌کنند، افزایش می‌یابد. تعداد زیادی برنامه تقویم اندروید در اینترنت وجود دارد که برخی از آن‌ها قابلیت‌ها و آپشن‌های بیشتری نسبت‌به سایرین دارند. چنین برنامه‌هایی در جهت راحت کردن امور روزانه کاربران طراحی می‌شوند.مهم‌ترین کارایی برنامه تقویم اندروید و به‌طورکلی برنامه‌های تقویم برای گوشی، مطلع شدن از مناسبت‌ها و روزهای تعطیل سال جدید است. کاربران علاوه‌بر اطلاعاتی مثل این‌که در سال جدید چه روزهایی تعطیل است، به موارد دیگری در قالب یک برنامه نیاز خواهند داشت. مثلاً برنامه‌ای با قابلیت تبدیل تاریخ خصوصاً تاریخ میلادی به شمسی و برعکس، یک برنامه برای ثبت رویدادهای شخصی، قبله‌نما، برنامه‌ای برای اعلان اوقات شرعی و وقت اذان و ... . ‌ در ادامه یکی از برنامه‌های تقویم مناسب اندروید که توسعه‌دهندهٔ آن پیام قادر کوره پز است را به شما معرفی می‌کنیم.تقویم سال 1402قابلیت تبدیل تاریخهرکدام از ما بارها به تبدیل تاریخ شمسی به میلادی، قمری به شمسی، میلادی به شمسی و قمری و .. نیاز پیدا کردیم. هرچند که سایت‌های زیادی با خدمات تبدیل تاریخ وجود دارد، اما دانلود یک برنامه موبایل با قابلیت تبدیل تاریخ کار ما را راحت‌تر می‌کند.اگر تقویم سال جدید همراه مناسبت‌ها قابلیت تبدیل تاریخ هم داشته باشد که دیگر خیلی عالی می‌شود. در این صورت خیلی راحت و بدون نیاز به اینترنت، می‌توانید تاریخ‌های مختلف را به هم تبدیل کنید. برنامه تقویم اندروید جدیدی که به شما معرفی می‌کنیم، از قابلیت تبدیل تاریخ برخوردار است. جهت استفاده از این قابلیت، به منوی سمت راست در قسمت بالای برنامه بروید و دومین گزینه یعنی تبدیل تاریخ را انتخاب کنید، سپس در بخش‌های مشخص‌شده، روز، ماه و سال موردنظر را وارد کنید، سپس تاریخ دقیق در پایین صفحه به شما نشان داده می‌شود.قابلیت قطب‌نماهرکدام از ما گاهی مواقع به قطب‌نما برای جهت‌یابی یا موقعیت‌یابی نیاز خواهیم داشت. دانلود برنامه تقویم کاربردی به همراه تاریخ و مناسبت‌ها از قابلیت جهت‌یابی یا قطب‌نما نیز برخوردار است. قطب‌نمای این برنامه در منوی سمت راست قسمت بالای صفحه قرار داده شده‌است. وارد گزینهٔ قطب‌نما که می‌شوید، صفحهٔ جدید با گرافیک جذاب جهت و موقعیت را به شما نشان می‌دهد.توجه داشته باشید که جهت کار کردن عملکرد دقیق‌تر سنسور قطب نما حتماً باید از اشیاء مغناطیسی دور شوید، دستگاه را برگردانید و سپس آن را روی سه محور به جلو و عقب بچرخانید. همچنین برای این‌که موقعیت ماه و خورشید و جهت قبله را به‌دست بیاورید، باید موقعیت مکانی خود را در بخش تنظیمات برنامه وارد کنید.اوقات شرعیاطلاع از اوقات شرعی برای ما مسلمانان اهمیت بسیاری دارد. این قضیه بالاخص در ماه مبارک رمضان و اعلام زمان افطار و سحر اهمیت بیشتری پیدا می‌کند. دانلود برنامه تقویم سال جدید به همراه مناسبت‌ها اوقات شرعی را نیز به شما نشان می‌دهد.قبله‌نما فارسیبرای ما مسلمان اطلاع از جهت قبله خصوصاً در سفر و موقعیت‌های مشابه دیگر اهمیت زیادی دارد. امروزه همه‌چیز رنگ تکنولوژی به خود گرفته و این امر حتی درمورد عبادت و انجام فرائض دینی نیز نمایان است.ستاره‌شناسییکی دیگر از آیتم‌های برنامه تقویم اندروید جدید مذکور ستاره‌شناسی است که در همان منوی سمت راست بالای صفحه اصلی برنامه وجود دارد. در این قسمت نیز اطلاعات کاربردی درمورد ستارگان، ماه و خورشید با شمایل گرافیکی جذاب نمایش داده می‌شود.چرا تقویم سال ۱۴۰۲همان‌طور که گفتیم و خودتان هم می‌دانید، اکثر ما برای اطلاعات از روزهای تعطیل سال و مناسبت های مختلف به یک برنامه تقویم گوشی هوشمند خود حتما نیاز داریم. پیش‌تر که گوشی‌های هوشمند وجود نداشت، تقویم‌ها به‌صورت دفترچه‌های کوچک، سررسید سالانه و به اشکال مختلف دیگری ارائه می‌شد که امروزه نیز چنین تقویم‌هایی هنوز کاربرد دارند. اما یک تقویم شبیه به یک برنامهٔ آموزشی با ارائه اطلاعات بیشتر، فقط در قالب اپلیکیشن‌های موبایلی کاربرد بیشتری خواهد داشت.بیشتر افراد به‌دنبال دانلود تقویم هوشمند با قابلیت‌هایی بیشتر از نشان دادن روزها و مناسبت‌ها هستند. برای مثال یک برنامه تقویم که رویدادهای شخصی را نشان می‌دهد یا این‌که بتوان شیفت کاری را بر روی آن تنظیم کرد، مطمئنا بیشتر از یک برنامه تقویم معمولی قابلیت خواهد داشت.برنامه تقویم ۱۴۰۲  قابلیت پشتیبانی از تقویم شمسی، تقویم میلادی و تقویم هجری شمسی را داراست. این برنامه با پشتیبانی از زبان‌های فارسی، کردی، ترکی، پشتو و اردو، مناسب برای کاربرانی است که به دنبال یک تقویم با قابلیت‌های متنوع هستند.با استفاده از این برنامه میتوانید به سادگی تاریخ میلادی و شمسی را تبدیل کنید و به مناسبت‌های مختلف ایرانی و جهانی دسترسی داشته باشید. همچنین این برنامه دارای اوقات شرعی نقاط مختلف ایران است و به صورت دقیق اعلام می‌شود.برنامه تقویم ایرانی ۱۴۰۲ دارای ویجت هوشمند و نمایش ساعت و اوقات شرعی می‌باشد که با استفاده از آن میتوانید به سرعت و به صورت دقیق اطلاعات خود را مشاهده کنید.با استفاده از برنامه تقویم ایرانی ۱۴۰۲، میتوانید به مناسبت‌های رسمی ایران دسترسی داشته باشید و به دنبال تعطیلات رسمی کشور بگردید. همچنین میتوانید از مناسبت‌های بین‌المللی نیز بهره مند شوید. از دیگر امکانات برنامه میتوان به موارد زیر اشاره کرد:برو به تاریخ (در این قسمت می‌توانید روز، ماه و سال موردنظر خود را به‌صورت هجری شمسی، میلادی یا هجری قمری وارد کرده و سپس برنامهٔ همان تاریخ را به شما نشان می‌دهد. با لمس آیکون فلش برگردان در بالای صفحه برنامه به تاریخ فعلی باز می‌گردد.).افزودن رویداد (جهت فعالسازی این آپشن باید ابتدا به برنامه مجوز دسترسی به تقویم دستگاه را بدهید، سپس برنامه به‌صورت هوشمند رویدادهای شخصی شما را نشان می‌دهد).مناسبت‌های ماه (این قسمت مناسبت‌های هر ماه را در پایین صفحه نشان می‌دهد.).?نمایش تقویم ثانویه با سه گزینه (هیچ‌کدام، میلادی و هجری قمری).دربارهٔ توسعه‌دهندهٔ برنامه تقویم 1402 همراه مناسبت‌هاهمان‌طور که در ابتدای مقاله نیز ذکر کردیم، برنامه تقویم اندروید مورد بحث توسط پیام قادر کوره پز طراحی و ارائه شده‌است. این توسعه‌دهنده چندین برنامه و اپلکیشن کاربردی با محتوای مفید از قبیل برنامه فال حافظ، دیوان حافظ صوتی با فال، برنامه تعبیر خواب برای موبایل، برنامه و اپلکیشن کاربردی آموزش بدنسازی فیتنس کار و ده‌ها مورد دیگر را طراحی و تولید کرده‌است. برنامه‌های این توسعه‌دهنده توانا را می‌توانید از طریق گوگل‌پلی با جستجو کردن نام آن Payam GhaderKurehpaz دانلود کنید.جمع‌بندیتقویم سال جدید همراه مناسبت‌ها یک تقویم ایرانی کاربردی و مفید است که اطلاعات کامل و بدون نقص را به کاربران ارائه می‌دهد. تمام بخش‌های این برنامه ازجمله نشان دادن مناسبت‌ها، مبدل تاریخ، قبله‌نما و ... کاربردی هستند. به‌علاوه کاربری نرم‌افزار خیلی آسان است و گرافیک جذابی دارد.اگر به دنبال یک برنامه تقویم با ویژگی‌های متنوع و پشتیبانی از تقویم‌های مختلف هستید، برنامه تقویم ایرانی ۱۴۰۲ را به شما توصیه می‌کنیم. این برنامه با امکانات متنوعی که شامل تقویم شمسی، میلادی و قمری، نمایش تعطیلات رسمی ایران، ویجت هوشمند و نمایش ساعت و اوقات شرعی، تبدیل تاریخ شمسی به میلادی و برعکس، پشتیبانی از مناسبت‌های ایران و جهانی، و اتصال به تقویم گوگل است، برای مدیریت بهتر تاریخ و مناسبت‌های خود مناسب است.با نصب این برنامه، به راحتی و به صورت دقیق می‌توانید تاریخ و مناسبت‌های خود را مدیریت کنید و از تعطیلات رسمی کشور، مناسبت‌های مذهبی و ملی، مناسبت‌های بین‌المللی و سایر مناسبت‌ها مطلع شوید. برنامه تقویم ایرانی ۱۴۰۲ را برای همه کاربران توصیه می‌کنیم. همین الان از لینک زیر این برنامه را از گوگل پلی دانلود کنید و از آن لذت ببرید:https://play.google.com/store/apps/details?id=net.kurdsofts.persiancalendar</description><category>Peyman Ghaderkourehpaz</category><author>Peyman Ghaderkourehpaz</author><pubDate>Sat, 06 May 2023 10:15:51 +0330</pubDate></item></channel></rss>