کدگذاری نگافیبوناچی

در ریاضیات، کدگذاری نگافیبوناچی (انگلیسی: Negafibonacci coding) یک کد جامع (فشرده‌سازی داده‌ها) است که اعداد صحیح غیرصفر را به کلمات کد دودویی تبدیل می‌کند. این روش شبیه به کدگذاری فیبوناچی است، با این تفاوت که امکان نمایش هر دو دستهٔ اعداد صحیح مثبت و منفی را فراهم می‌سازد. همۀ کدها با «۱۱» پایان می‌یابند و پیش از انتها هیچ «۱۱» دیگری در آن‌ها وجود ندارد.

روش کدگذاری

گام‌های زیر نحوۀ کدگذاری یک عدد صحیح غیرصفر را شرح می‌دهند. توجه داشته باشید که نشان‌دهندۀ دنبالۀ نگافیبوناچی است.

  1. اگر مثبت باشد، بزرگ‌ترین عدد صحیح فرد منفی مانند را محاسبه کنید به‌گونه‌ای که مجموع جملات فرد منفی دنبالۀ نگافیبوناچی از ۱- تا با گام ۲-، بزرگ‌تر یا مساوی با شود:

    اگر منفی باشد، بزرگ‌ترین عدد صحیح زوج منفی مانند را محاسبه کنید به‌گونه‌ای که مجموع جملات زوج منفی دنبالۀ نگافیبوناچی از ۰ تا با گام ۲-، کوچک‌تر یا مساوی با شود:
  2. یک رقم ۱ در بیت ـُم کلمۀ دودویی قرار دهید. سپس مقدار را از کم کنید.
  3. فرایند را از گام ۱ با مقدار جدید x تکرار کنید تا زمانی که مقدار آن به ۰ برسد.
  4. برای پایان کدگذاری، یک رقم ۱ در سمت چپ کلمۀ دودویی به‌دست‌آمده بیفزایید.

برای رمزگشایی یک کلمۀ دودویی کدگذاری‌شده، چپ‌ترین رقم ۱ را از کلمۀ دودویی حذف کنید؛ زیرا این رقم تنها برای نشان دادن پایان عددِ کدگذاری‌شده به کار رفته است. سپس به بیت‌های باقی‌مانده، مقادیر دنبالۀ نگافیبوناچی را از ۱- (۱، ۱-، ۲، ۳-، ۵، ۸-، ۱۳...) اختصاص دهید و تمام مقادیری را که متناظر با بیت ۱ هستند با یکدیگر جمع کنید.

نمایش نگافیبوناچی

الگو:دستگاه‌های عددنویسی

کدگذاری نگافیبوناچی ارتباط نزدیکی با نمایش نگافیبوناچی دارد؛ نوعی دستگاه عددنویسی ارزشی که گاهی ریاضیدانان آن را به کار می‌برند. کد نگافیبوناچی برای یک عدد صحیح غیرصفر معین، دقیقاً همان نمایش نگافیبوناچی آن عدد است، با این تفاوت که ترتیب ارقام آن معکوس شده و یک رقم «۱» اضافی نیز به انتهای آن افزوده می‌شود. کد نگافیبوناچی برای همۀ اعداد منفی دارای تعداد ارقام فرد است، در حالی که کد مربوط به همۀ اعداد مثبت تعداد ارقام زوج دارد.

جدول

کد مربوط به اعداد صحیح از ۱۱- تا ۱۱ در جدول زیر آمده است.

عدد نمایش نگافیبوناچی کد نگافیبوناچی
۱۱-۱۰۱۰۰۰۰۰۰۱۰۱۱
۱۰-۱۰۱۰۰۱۱۰۰۱۰۱۱
۹-۱۰۰۰۱۰۰۱۰۰۰۱۱
۸-۱۰۰۰۰۰۰۰۰۰۰۱۱
۷-۱۰۰۰۰۱۱۰۰۰۰۱۱
۶-۱۰۰۱۰۰۰۰۱۰۰۱۱
۵-۱۰۰۱۰۱۱۰۱۰۰۱۱
۴-۱۰۱۰۰۱۰۱۱
۳-۱۰۰۰۰۰۰۱۱
۲-۱۰۰۱۱۰۰۱۱
۱-۱۰۰۱۱
۰۰(قابل کدگذاری نیست)
۱۱۱۱
۲۱۰۰۰۰۱۱
۳۱۰۱۱۰۱۱
۴۱۰۰۱۰۰۱۰۰۱۱
۵۱۰۰۰۰۰۰۰۰۱۱
۶۱۰۰۰۱۱۰۰۰۱۱
۷۱۰۱۰۰۰۰۱۰۱۱
۸۱۰۱۰۱۱۰۱۰۱۱
۹۱۰۰۱۰۱۰۰۱۰۱۰۰۱۱
۱۰۱۰۰۱۰۰۰۰۰۰۱۰۰۱۱
۱۱۱۰۰۱۰۰۱۱۰۰۱۰۰۱۱

جستارهای وابسته

منابع

آثار ذکرشده

الگو:آغاز جعبه پیوندها

  • Knuth, Donald (2008). Negafibonacci Numbers and the Hyperbolic Plane. Annual meeting of the Mathematical Association of America. San Jose, California.
  • Knuth, Donald (2009). هنر برنامه‌نویسی رایانه. Vol. 4, Fascicle 1: Bitwise Tricks & Techniques, Binary Decision Diagrams. Addison-Wesley. ISBN 978-0-321-58050-4. In the pre-publication draft of section 7.1.3 see in particular pp. 36–39.
  • Margenstern, Maurice (2008). Cellular Automata in Hyperbolic Spaces. Advances in unconventional computing and cellular automata. Vol. 2. Archives contemporaines. p. 79. ISBN 9782914610834.

الگو:پایان جعبه پیوندها


جستارهای وابسته

منابع