نتيجة للتشفير الحسابي، يتم استبدال تسلسل الأحرف. نظرة عامة على خوارزميات الضغط بدون فقدان البيانات

06.04.2019

هناك تعريفات عديدة للأسرة في علم الاجتماع. الفهم الأكثر شيوعًا للأسرة هو اتحاد الأشخاص على أساس قرابة الدم أو الزواج أو التبني، الذين يرتبطون بحياة مشتركة و (أو) المسؤولية المتبادلة لتربية الأطفال. تشمل الأسرة مكونات متنوعة مرتبطة بالعمليات الفسيولوجية، وعلم نفس العلاقات، ومعايير وقيم الثقافة، والديناميات الديموغرافية، وظروف المعيشة الاقتصادية، والدولة، والسياسة، والتاريخ. ولهذا السبب تعتبر الأسرة في علم الاجتماع مؤسسة اجتماعية مرتبطة بمؤسسات أخرى. ومن ناحية أخرى، ينظر علم الاجتماع إلى الأسرة باعتبارها مجموعة صغيرة، باعتبارها نظامًا اجتماعيًا مستقلاً نسبيًا له قيم واتجاهات وأدوار محددة. وبالتالي، في علم الاجتماع، مع منهجه في دراسة العالم الاجتماعي من خلال العلاقة بين الشخصي والعام، تعمل الأسرة كوسيط بين الفرد والمجتمع.

الأساس الأولي للعلاقات الأسرية هو الزواج. الزواج هو شكل متغير تاريخياً من أشكال العلاقة بين الرجل والمرأة، ومن خلاله ينظم المجتمع حياتهم الجنسية ويعاقبها ويحدد حقوقهم والتزاماتهم الزوجية. يمكنك أن تقول أن الزواج هذه مجموعة من القواعد التي تحكم علاقة الزوجين ببعضهما البعض، وحقوقهما والتزاماتهما المتبادلة، وكذلك علاقتهما بالأطفال والملكية المشتركة. تختلف أشكال الزواج التي تستخدمها المجتمعات بشكل كبير.

في بعض الأحيان يحد المجتمع من اختيار الشريك في الزواج من خلال السماح باختياره فقط خارج مجموعة ضيقة معينة. يُطلق على هذا الشكل من الزواج عادةً اسم الزواج الخارجي. في مجتمعنا، يتم استخدام هذا القيد لتجنب علاقات سفاح القربى. وهكذا فإن القواعد القانونية تمنعنا من الزواج من الأخوات وأبناء العمومة وبعض الأقارب الآخرين. في العديد من المجتمعات، يُمنع اختيار الزوج داخل العشيرة والقرية وأحيانًا حتى القبيلة.

في المجتمعات، هناك أيضًا متطلبات معاكسة، عندما يكون اختيار الشريك في الزواج ممكنًا فقط داخل المجموعة الخاصة. عادة ما يسمى هذا النوع من الزواج زواج الأقارب. في المجتمعات الحديثة، ينتشر زواج الأقارب العنصري أو زواج الأقارب الطبقي على نطاق واسع. زواج الأقارب هو سمة من سمات المجموعات المغلقة مثل الطبقات، حيث يتم الحفاظ على انغلاقهم من خلال الزواج الداخلي.

وعلى أساس عدد الشركاء في الزواج، يتم التمييز بين الزواج الأحادي وتعدد الزوجات. الزواج الأحادي، ᴛ.ᴇ. زواج رجل واحد بامرأة واحدة (في وقت واحد) هو الأكثر شيوعا في المجتمعات الأوروبية الحديثة. ولكن في تطور معظم المجتمعات، كان تعدد الزوجات يمارس. أشكال الزواج التي يكون فيها أكثر من شريك في الزواج. هناك ثلاثة أشكال محتملة لتعدد الزوجات. بادئ ذي بدء، الزواج الجماعي، حيث يوجد العديد من الرجال والعديد من النساء في علاقة زوجية في وقت واحد. أحد الأشكال النادرة جدًا لتعدد الزوجات هو تعدد الأزواج، عندما يكون للمرأة عدة أزواج. الشكل الأكثر شيوعاً لتعدد الزوجات هو تعدد الزوجات، أو تعدد الزوجات. كما أشار س.س. فرولوف، رأي ممثلي أوروبا الحديثة وأمريكا الشمالية حول تعدد الزوجات هو إلى حد كبير مركزية عرقية. “كثيرون في مجتمعنا، على سبيل المثال، يعتقدون أن رعاية هذا النوع من الزواج تؤدي إلى إهانة المرأة، وتحويلها إلى عبدة. وهذا يعتبر قسوة غير مسبوقة ويسبب الغضب (وربما هذا الشعور مستوحى من بعض الأفلام عن حكام الشرق). إلا أن الحقائق تشير إلى عكس ذلك. من الصعب تحديد المجتمع الذي تتمتع فيه المرأة بمكانة أعلى - في مجتمع به شكل من أشكال الزواج متعدد الزوجات أو الزواج الأحادي. بادئ ذي بدء، حتى في المجتمعات التي يشيع فيها تعدد الزوجات، يكون الزواج عادة أحادي الزواج. فقط الأشخاص الأكثر نجاحًا وذوي المكانة العالية يمكنهم تحمل أكثر من زوجة واحدة. ثانيا، يتم توزيع المسؤوليات بين الزوجات بشكل واضح، وغالبا ما يكون للزوجة الأولى تأثير حاسم على سلوك زوجها. إن حياة جميع الزوجات آمنة بما فيه الكفاية، وهن، كقاعدة عامة، لا يرغبن في الحصول على حصة مختلفة لأنفسهن.

بالإضافة إلى ذلك، وفقا لنوع علاقات القوة، يتم التمييز بين الزواج الأبوي (الزوج لديه السلطة)، والزواج الأمومي (الزوجة لديها السلطة)، والزواج المتساوي (كلا الزوجين لديهما السلطة). في المجتمعات الأوروبية الحديثة، يسود الزواج المتساوي.

لسوء الحظ، الزواج ليس ناجحا دائما، ولتصحيح الوضع في المجتمعات الحديثة، يتم توفير الطلاق. ولكن، في الوقت نفسه، فإن أي عدم استقرار في مؤسسة الأسرة يكون مضرًا بالمجتمع. لهذا السبب، يوجد في كل مجتمع تقريبًا قواعد وقوانين معينة تجعل الطلاق صعبًا أو تمنح امتيازات لأحد الطرفين. تميل معظم المجتمعات إلى جعل الطلاق عملية مؤلمة للغاية. وهذا ينطبق بشكل خاص على المجتمعات التي يتم فيها اختيار شريك الزواج من قبل الوالدين. في كثير من الأحيان، في المجتمعات التي تكون فيها الأسرة الأصلية ذات أهمية كبيرة، تتم تربية الطفل في حالة الطلاق جزئيًا على يد الإخوة أو الأخوات أو الأعمام أو العمات. كما أشار س.س. فرولوف، "في مجتمعنا، مع التركيز القوي على الحب الفردي عند اختيار الشريك ومع الأولوية الواضحة للعائلة النووية، غالبا ما يستلزم الطلاق عواقب مأساوية على كل من الأطفال والبالغين".

باعتبارها مؤسسة اجتماعية، تؤدي الأسرة الوظائف التالية في المجتمع

وظيفة التنظيم الجنسي هي أن المجتمع ينظم ويوجه وينظم الحاجات الجنسية الطبيعية للناس. وفي الوقت نفسه، لدى كل مجتمع تقريبًا طرق بديلة لتلبية الاحتياجات الجنسية. على الرغم من وجود معايير معينة للإخلاص الزوجي، إلا أن معظم المجتمعات تغفر بسهولة انتهاك هذه المعايير.

تتمثل الوظيفة الإنجابية في تكاثر أجيال جديدة من أفراد المجتمع. وفي الوقت نفسه، من المهم أن يتمتع الأطفال بصحة جيدة بدنيًا وعقليًا وأن تكون لديهم القدرة على التعلم والتواصل الاجتماعي. وفي الوقت نفسه، فإن أحد الشروط المهمة لوجود المجتمع هو تنظيم معدل المواليد، وتجنب الانخفاضات الديموغرافية، أو على العكس من ذلك، الانفجارات. الأسرة هي المؤسسة الرئيسية المسؤولة عن إنجاب أفراد المجتمع الجدد. الطرق الأخرى غير فعالة، وعادة ما تكون مستهجنة اجتماعيا. ولهذا السبب فإن ظهور الطفل خارج مؤسسة الأسرة عادة ما يثير الشفقة والرحمة والإدانة.

وظيفة التنشئة الاجتماعية هي أن الأسرة تساعد الطفل على تعلم أعراف المجتمع الذي ولد فيه. في الأسرة يتم وضع أسس تكوين الشخصية. ويشير فرولوف إلى أن «كثيرًا من المفكرين، بدءًا من أفلاطون، تحدثوا عن التنشئة الاجتماعية في تربية الأبناء، لكن كل محاولات التنشئة الاجتماعية خارج مؤسسة الأسرة باءت بالفشل. على سبيل المثال، بعد الثورة في الاتحاد السوفيتي، تم إنشاء برامج متخصصة للتعليم العام للأطفال حتى تتمكن المرأة من المشاركة في عملية العمل. ومع ذلك، لم يتم استخدام هذه التجربة على نطاق واسع. يحاولون اليوم في مجتمعنا الجمع بين جهود المؤسسات التعليمية ومؤسسة الأسرة من أجل التنشئة الاجتماعية الناجحة للأطفال، لكن الأسرة لا تزال لها الأولوية في التنشئة الاجتماعية للأفراد. في إسرائيل الحديثة، يتم تربية الأطفال في الكيبوتسات (المزارع التعاونية) في أكواخ جماعية ويشرف عليهم معلمون متخصصون، بينما تؤدي أمهاتهم وظائف مختلفة في نفس الكيبوتسات. يقضي الآباء عادةً حوالي ساعتين يوميًا مع أطفالهم وطوال يوم السبت. وبحسب بعض المراقبين فإن مثل هذا التعليم ناجح، رغم وجود معارضين كثيرين. صحيح أن عدداً قليلاً فقط من بني إسرائيل نشأوا على هذا النحو. ربما تؤكد هذه الاستثناءات النادرة فقط على الأهمية الأساسية للأسرة في التنشئة الاجتماعية للأطفال. الأسرة هي المجموعة الأساسية للطفل، ومن هنا يبدأ التطور الشخصي. وعلى الرغم من ظهور مجموعات أولية أخرى لاحقاً، إلا أن الفرد يحتفظ دائماً بأنماط السلوك الأساسية التي غرسها في مرحلة الطفولة المبكرة. الطريقة الرئيسية للتنشئة الاجتماعية الأسرية هي تقليد الأطفال لأنماط سلوك أفراد الأسرة البالغين. تنشأ صعوبات التنشئة الاجتماعية إذا كان الطفل يسترشد بأنماط غير ناجحة من سلوك الوالدين والتي تتعارض مع ما يراه الطفل في الأسر الأخرى. وفي هذه الحالة، غالبًا ما ينشأ عدم الرضا عن تصرفات الأم أو الأب، ويبدأ الطفل في البحث عن نماذج مقبولة للسلوك لدى أفراد آخرين، في مجموعات أولية أخرى.

الوظيفة العاطفية هي إشباع حاجة الشخص للتواصل الحميم. "يعتقد الأطباء النفسيون أن السبب الرئيسي للصعوبات العاطفية والسلوكية في التواصل وحتى المرض الجسدي هو الافتقار إلى الحب والدفء والتواصل الحميم الكامل في المجموعة الأساسية، وقبل كل شيء في الأسرة. تشير كمية هائلة من البيانات إلى أن الجرائم الخطيرة وغيرها من الانحرافات السلبية تحدث في كثير من الأحيان بين أولئك الذين حرموا من رعاية الأسرة في مرحلة الطفولة، وأن الأطفال الذين نشأوا في دور الأيتام دون حب الأم والأب هم أكثر عرضة للأمراض والاضطرابات العقلية، زيادة معدل الوفيات، والسلوك المنحرف. ثبت؛ أن حاجة الناس إلى التواصل الوثيق والسري والحميمية والتعبير العاطفي عن مشاعرهم تجاه أحبائهم هي عنصر حيوي في الوجود. تعتبر الأسرة، بسبب بنيتها وصفاتها، أهم مصدر للرضا العاطفي. علاقات القرابة والزواج توفر للناس مثل هذه الفرصة.

وظيفة الحالة هي أن كل شخص نشأ في عائلة يتلقى كميراث بعض الحالات القريبة من حالات أفراد عائلته. "ينطبق هذا في المقام الأول على الأوضاع المهمة للفرد مثل الجنسية، والمكانة في الثقافة الحضرية أو الريفية، وما إلى ذلك. في المجتمعات الطبقية، توفر الأسرة التي تنتمي إلى طبقة اجتماعية معينة للطفل الفرص والمكافآت المميزة لهذه الطبقة، وفي المجتمع الطبقي، الغالبية العظمى من الحالات تحدد حياته المستقبلية. بالطبع، يمكن أن يتغير الوضع الطبقي بسبب جهود الشخص والظروف المواتية، ولكن يجب البحث عن بداية المستقبل في عائلة ذلك الشخص. "يجب على الأسرة بالضرورة أن تقوم بدور إعداد الطفل لمكانة قريبة من حالة والديه وأقاربه، وغرس فيه الاهتمامات والقيم وأسلوب الحياة المقابلة."

وظيفة الحماية هي أن الأسرة مصممة لحماية الشخص من الحمل الزائد، مما يوفر له الفرصة للاسترخاء بعد يوم شاق. وبالإضافة إلى ذلك، توفر مؤسسة الأسرة، بدرجات متفاوتة، الحماية الجسدية والاقتصادية والنفسية لأفرادها. عادة، من خلال التأثير على مصالح أي فرد وسلامته، فإننا نؤثر أيضًا على عائلته، التي يقوم أفرادها بحماية أحبائهم أو الانتقام منه

تتكون الوظيفة الاقتصادية من إدارة أفراد الأسرة لأسرة مشتركة، حيث يعملون جميعاً كفريق واحد، وتساهم في تكوين روابط اقتصادية قوية بينهم. تشمل معايير الحياة الأسرية تقديم المساعدة والدعم الإلزاميين لكل فرد من أفراد الأسرة إذا واجه صعوبات اقتصادية.

وبالنظر إلى أهمية الوظائف التي يتعين على الأسرة القيام بها، تحاول الدولة تهيئة الظروف لتنفيذها على النحو الأكثر فعالية. تسمى هذه الأنشطة عادة سياسة الأسرة الحكومية نظام من التدابير الحكومية لضمان الضمان الاجتماعي للأسرة، وتهيئة الظروف لتنفيذ وظائفها ذات الأهمية الاجتماعية

أشكال الأسرة كمجموعة صغيرة متنوعة للغاية.

وفقا لمراحل دورة الحياة، يتم تمييز عائلة شابة (تصل إلى 10 سنوات من الخبرة العائلية) وعائلة ناضجة.

وفقًا لمعيار الوضع الاجتماعي، يمكن أن تكون العائلات متجانسة (أزواج من نفس الطبقة الاجتماعية - على سبيل المثال، عائلة طلابية) وغير متجانسة (من فئات وطبقات وطبقات مختلفة)، ووفقًا للمعيار القومي العرقي - بين الأعراق أو الزواج الدولي.

في المجتمع الحضري الحديث، أصبح النوع الرئيسي للأسرة هو الأسر النووية، التي تتكون من جيلين - الآباء والأمهات والأطفال. عادة ما تسمى الأسرة النووية إنجابية (إذا بقي فيها أطفال قاصرون) أو توجيهية (يخرج الأطفال البالغون ويخلقون أسرهم الإنجابية). يتم تصنيف الأسر الإنجابية حسب وجود الأطفال: الأطفال، الذين ليس لديهم أطفال، والأيتام الأسرة. في المقابل، يمكن أن تتكون الأسرة التي لديها أطفال من طفل واحد وطفلين والعديد من الأطفال. في بعض الأحيان تسمى الأسر النووية متزوجة، ولكن يمكن أيضًا أن تكون الأسرة النووية بدون أحد الزوجين (عائلة غير مكتملة من جهة الأب أو غير مكتملة من جهة الأم). في عائلة الأم غير المكتملة، يتم التمييز بين عائلة الأم العزباء (عندما يولد الطفل خارج إطار الزواج)، وعائلة الأم العزباء (عندما يولد الطفل في إطار الزواج) وعائلة الجندي المجند . وتتكون الأسرة الممتدة من عدد من الأزواج (الأب، والد الزوج، والحماة، والإخوة والأخوات، وأزواجهم وأطفالهم). هذه هي عائلات الأقارب. الأسرة الممتدة الكاملة هي عندما لا يترك أي من الرجال من أجيال مختلفة الأسرة الممتدة. مثل هذه العائلات نموذجية بالنسبة للصين.

لا تعتمد الأسرة الممتدة أو عائلة القرابة على العلاقة الزوجية بين شخصين فحسب، بل أيضًا على علاقة الدم بين عدد كبير من الأقارب. إن أهمية الأسر النووية وأسر القرابة بالنسبة للمجتمع ليست هي نفسها. وهكذا، على الرغم من أن مجتمعنا يحافظ على عائلة القرابة من أجل التجمعات العائلية والاحتفالات وغيرها من الأغراض الاحتفالية، فإن أهم الوظائف الاجتماعية تقوم بها الأسرة النووية. ويتم التعبير عن هذا في العديد من عناصر الثقافة، على سبيل المثال عندما تتطلب القوانين والمعايير الأخلاقية أن يدعم الآباء أطفالهم، ولكن لا يذكرون شيئًا عن المسؤوليات تجاه الإخوة أو الأخوات، أو الأعمام أو العمات.

إذا كان جوهر الأسرة النووية هو زوجان، فإن جوهر عائلة القرابة هم الإخوة والأخوات المحاطون بأزواجهم وزوجاتهم وأطفالهم. في معظم عائلات الأقارب، يظل الرجل المتزوج (أو المرأة المتزوجة) مرتبطًا في المقام الأول بالعائلة الأصلية ويشكل نصف جزء من عائلة الزوجة (أو الزوج). وهذا له عواقب مهمة. يرتبط الشخص في المقام الأول بالالتزامات والمسؤوليات تجاه الأسرة التي ولد فيها، ولكن ليس تجاه الأسرة التي تزوج بها. ومن ثم، فلا يجوز للمرأة أن تعتمد على زوجها، بل تعتمد بشكل كامل على إخوتها وأخواتها في حماية الأطفال وتربيتهم.

في الأسر الممتدة، يتم توزيع المسؤولية والرعاية بين عدد كبير إلى حد ما من أفراد الأسرة. يتم إنشاء موقف يرتبط فيه الطفل ارتباطًا وثيقًا ليس فقط بوالديه، ولكن أيضًا بأعمامه وخالاته. إنه محاط بالبالغين المستعدين في بعض الحالات لتحمل مسؤوليات الوالدين. ومع ذلك، فإن الطفل في عائلة ذات صلة لديه فرصة أكبر للتواصل والتنشئة الاجتماعية في عدد أكبر من الأدوار. مثل هذه العائلة تحمي الطفل جيدًا من أي صعوبات في الحياة. إذا ماتت الأم أو تركت الأسرة، يمكن للأقارب أن يلعبوا دورها إلى حد ما.

في الحياة الواقعية، ليس من الممكن دائمًا تكوين عائلة ذات صلة. ويرجع ذلك، على سبيل المثال، إلى حقيقة أن مكان الميلاد ومكان الزواج بعيدان بشكل كبير عن بعضهما البعض. وفي الوقت نفسه، قد يكون الأقارب بعيدين فعليًا أو اجتماعيًا عن الزوجين، وفي هذه الحالة تظل الأسرة نووية بحتة. يتميز المجتمع الحديث بضعف العديد من الروابط الأسرية، وبالتالي هيمنة الأسرة النووية على الأسرة المرتبطة بها.

يتم تحديد عملية تكوين الأسرة كمجموعة صغيرة من خلال المنظمين المعياريين للقيمة (معايير السلوك الجنسي، ومعايير اختيار شريك الزواج، والعلاقات بين الوالدين والأطفال). في المراحل الأولى من المجتمع، تم تنظيم العلاقات بين الجنسين والأجيال بالعادات القبلية وعلى أساس الأفكار الدينية والأخلاقية. مع ظهور الدولة، اكتسب تنظيم الحياة الأسرية طابعا قانونيا.

طريقة هوفمان بسيطة، ولكنها فعالة فقط عندما تكون احتمالات ظهور الأحرف مساوية للأرقام، حيث يوجد أي عدد صحيح موجب. وذلك لأن كود هوفمان يعين رمزًا يحتوي على عدد صحيح من البتات لكل حرف من الحروف الأبجدية. في الوقت نفسه، من المعروف في نظرية المعلومات أنه، على سبيل المثال، إذا كان احتمال ظهور رمز ما هو 0.4، فمن الأفضل أن يُعطى رمزًا للطول قليل. من الواضح أنه عند إنشاء أكواد هوفمان، من المستحيل ضبط طول الكود على 1.32 بت، ولكن فقط على 1 أو 2 بت، مما سيؤدي إلى ضغط أسوأ للبيانات. يحل التشفير الحسابي هذه المشكلة عن طريق تعيين رمز للملف المنقول بأكمله، وعادة ما يكون كبيرًا، بدلاً من تشفير الأحرف الفردية.

من الأفضل توضيح فكرة الترميز الحسابي بمثال بسيط. لنفترض أنه من المهم للغاية تشفير ثلاثة رموز لتدفق الإدخال، من أجل الوضوح - سلسلة SWISS_MISS بترددات الرمز المحددة: S - 0.5، W - 0.1، I - 0.2، M - 0.1 و _ - 0.1. في المبرمج الحسابي، يتم تمثيل كل حرف كفاصل زمني في نطاق من الأرقام يزيد بحيثنائب الرئيس_التكرار = 1. (سبب هذه الاتفاقية "العكسية" هوهل هذا cum_freq سيحتوي بعد ذلك على عامل تسوية، وهو مناسب للتخزين في بداية المصفوفة). تم ضبط الفاصل الزمني للعمل الحالي وسيكونان متساويين في البداية // خوارزمية فك التشفير الحسابي// القيمة هي الرقم الذي تم تلقيه كمدخل// اتصل بإجراء decode_symbol() حتى يعود// حرف "إنهاء". decode_symbol(نائب الرئيس_التكرار) البحث عن رمز من هذا القبيلcum_freq // منخفض = منخفض + نطاق*cum_freqرمز الإرجاع: لا تنقل خوارزمية التشفير الموصوفة أي شيء حتى يكتمل تشفير النص بأكمله، ولا تبدأ وحدة فك التشفير العملية حتى تتلقى النص المضغوط بالكامل. في معظم الحالات، يلزم وضع التنفيذ التدريجي. مطلوب لتمثيل الفاصل الزمنيعالي-منخفض+1 , بعبارة أخرى:(القيمة-المنخفضة+1)*cum_freq-1 cum_freq (١) المدى ، النطاق - 1 حيث النطاق = الأعلى - الأدنى + 1, 0 . النطاق (آخر عدم المساواة في التعبير(1) يأتي من حقيقة أن cum_freqيجب أن تكون كاملة). ثم نريد أن نظهرما هو منخفض" حيث منخفضة "و عالية" هناك قيم محدثة لـمنخفضة وعالية، كما هو موضح أدناه.النطاق*cum_freq(أ) منخفض" * منخفض + [ ──────────────────── ] cum_freq نطاق cum_freq 1 من التعبير (1) لدينا: ، cum_freq منخفض بالتالي" لأن كلا من القيمة والمنخفضة"، و cum_freq > 0 . range*cum_freq (a) عالية" * منخفضة + [ ────────────────────── ] - 1 >= cum_freq النطاق (القيمة-المنخفضة+1)*cum_freq-1>= منخفض + ───────────────────────────────────── + 1 - ه] - 1نطاق cum_freq من التعبير(1) لدينا: النطاق 1 النطاق-1 >= القيمة + ─────────── [- ───── + 1 - ─────── ] = القيمة. نطاق النطاق cum_freq الفائض السلبي. كما هو موضح في الكود الكاذب، يعمل التشفير الحسابي عن طريق قياس الاحتمالات المتراكمة التي يوفرها النموذج في الفترة لكل حرف مرسل. لنفترض ذلكمنخفضة وعالية قريبة جدًا من بعضها البعض بحيث تؤدي عملية القياس إلى تقليل الرموز المختلفة المستلمة من النموذج إلى عدد صحيح واحد مضمن في. في هذه الحالة، لا يمكن مواصلة الترميز الإضافي. ولذلك، يجب على التشفير التأكد من الفاصل الزمنيكانت دائما واسعة بما فيه الكفاية. إن أبسط طريقة للقيام بذلك هي التأكد من أن عرض الفاصل الزمني على الأقل Max_frequency - الحد الأقصى لقيمة مجموع جميع الترددات المتراكمة. كيف يمكن جعل هذا الشرط أقل صرامة؟ عملية إزاحة البت الموضحة أعلاه تضمن ذلكمنخفضة وعالية لا يمكن أن يصبحوا قريبين بشكل خطير إلا عندما يدخلون إلى النصف.لنفترض أنهم أصبحوا قريبين جدًا من ذلكFirst_qtr (*) سيكون للبتين التاليين من المخرجات قيم متبادلة: 01 أو 10. على سبيل المثال، إذا كان البت التالي هو صفر (أي.انخفاضات عالية تحت النصف، و تصبح فترة عمل)، والفترة التي تليها تصبح وحدة، لأن يجب أن يكون الفاصل الزمني أعلى من منتصف الفاصل الزمني للعمل. على العكس من ذلك، إذا تبين أن الشيء التالي 1, ثم سيتم اتباعه 0. لذلك، يمكن الآن تمديد الفاصل الزمني بأمان إلى اليمين، فقط إذا تذكرنا أنه مهما كانت البتة التالية، فمن الضروري أيضًا إرسال قيمتها العكسية إلى دفق الإخراج. البرنامج يحول في فترة كاملة، تذكر في bits_to_follow قيمة البت الذي يجب إرسال الإرجاع له. تتم جميع المخرجات من خلال إجراء bit_plus_follow()،وليس من خلال مباشرة Output_bit(). ماذا تفعل إذا كانت النسبة بعد هذه العملية(*) يبقى عادلا؟ بشكل عام، يجب عليك أولاً حساب عدد الامتدادات، ثم بعد البت التالي، قم بإرسال العدد الموجود من البتات العكسية إلى دفق الإخراج. باتباع هذه الإرشادات، يضمن برنامج التشفير ذلك بعد ذلكستكون هناك عمليات التحول أوقليل ، (1أ) أو منخفض . (1ب) ويعني ذلك أنه بينما يتم وضع الفاصل الصحيح الذي تغطيه الترددات المتراكمة في ربعه ممثلا فيcode_value، لن تنشأ مشكلة التجاوز السلبي. هذا يتوافقيستوفي الشرط: Top_value + 1 Max_frequency , 4 وهو راض في البرنامج، لأن Max_frequency = 2 ^ 14-1 والقيمة العليا = 2 ^ 16-1. وهذا مستحيل دون زيادة عدد البتات المخصصة لهاقيم_الرمز، استخدامها لتقديم عدادات التردد المتراكمة أكثر 14 أجزاءلقد نظرنا في مشكلة التدفق الناقص فقط فيما يتعلق بجهاز التشفير، نظرًا لأن فك تشفير كل حرف يتبع عملية التشفير، ولن يحدث التدفق الناقص إذا تم تنفيذ نفس القياس في نفس الظروف.تجاوز. الآن دعونا نفكر في إمكانية التجاوز أثناء ضرب الأعداد الصحيحة. لن يحدث تجاوز إذا كان نطاق المنتج*Max_frequencyيناسب كلمة كاملة، لأن المتراكمةلا يمكن أن تتجاوز الترددات Max_frequency. يتراوحله أهمية قصوى في أعلى_قيمة + 1،ولذلك فإن الحد الأقصى للمنتج الممكن في البرنامج هو 2^16*(2^14-1)، وهو أقل من 2^30. لتحديد قيمة code_value والمدى، يتم استخدام النوع الطويل،لضمان دقة 32 بت للحسابات الحسابية. 1 نماذج ثابتة. أبسط نموذج هو الذي تكون فيه ترددات الأحرف ثابتة، ويتم إعطاء ترددات البايت المتراكمة التي لم تظهر في العينة قيمًا مساوية 256 (ثم ​​سيعمل النموذج مع الملفات الثنائية، حيث يوجد كل شيء 1 بايت). النموذج الصارم هو النموذج الذي تتوافق فيه تكرارات أحرف النص تمامًا مع مواصفات النموذج، ومع ذلك، لكي يكون صارمًا حقًا، يجب أن تحتوي الأحرف التي لا تظهر في هذا الجزء على عدادات تساوي الصفر، وليس.(مع التضحية بالقدرة على تشفير النصوص التي تحتوي على هذه الأحرف). بالإضافة إلى ذلك، لا ينبغي ضبط عدادات التردد على تردد متراكم معين، كما كان الحال في البرنامج. يمكن حساب نموذج صارم وإرساله قبل إرسال النص. كليري ويتنأظهر أنه في ظل الظروف العامة فإن هذا لن يعطي عامنموذج التكيف. يقوم بتغيير ترددات الأحرف الموجودة بالفعل في النص. في البداية، قد تكون جميع العدادات متساوية، مما يعكس غياب البيانات الأولية، ولكن مع عرض كل رمز إدخال، فإنها تتغير، وتقترب من الترددات المرصودة. يستخدم كل من جهاز التشفير ووحدة فك التشفير نفس القيم الأولية (مثل العدادات المتساوية) ونفس خوارزمية التحديث، مما سيسمح لنماذجهما بالبقاء دائمًا على نفس المستوى. يتلقى برنامج التشفير الحرف التالي، ويقوم بتشفيره وتغيير النموذج. تحدد وحدة فك الترميز الحرف التالي استنادًا إلى طرازها الحالي، ثم تقوم بتحديثه. إجراءيتم استدعاء update_model(symbol) من encode_symbol() وdecode_symbol() بعد معالجة كل حرف. يعد تحديث النموذج مكلفًا للغاية نظرًا للحاجة إلى الحفاظ على المبالغ المتراكمة. في البرنامج، يتم وضع عدادات التردد المستخدمة بشكل مثالي في المصفوفة بترتيب تنازلي لقيمها، وهو نوع فعال من البحث الخطي ذاتي التنظيم. إجراء update_model() يقوم أولاً بفحص النموذج الجديد لمعرفة ما إذا كان يتجاوز حدود التردد المتراكم، وإذا حدث ذلك، يتم تقليل جميع الترددات عن طريق القسمة على 2, مع الحرص في نفس الوقت على عدم تحول العدادات إلى 0, ويعيد حساب القيم المتراكمة، ثم، إذا لزم الأمر، update_model().يعيد ترتيب الأحرف لتناسبهاضع الفئة الحالية في فئتها الصحيحة بالنسبة لترتيب التكرار، مع تبديل جداول التحويل لتعكس التغييرات. ونتيجة لذلك، يزيد الإجراء من قيمة عداد التردد المقابل ويرتب الترددات المتراكمة المقابلة.كفاءة الضغط. عند تشفير النص باستخدام الطريقة الحسابية، فإن عدد البتات في السلسلة المشفرة يساوي إنتروبيا هذا النص بالنسبة للنموذج المستخدم للتشفير. هناك ثلاثة عوامل تسبب تدهور هذه الخاصية: * تكاليف استكمال النص؛ * استخدام العمليات الحسابية ذات الدقة غير المحدودة؛ * يتم قياس العدادات بطريقة لا يتجاوز مجموعها Max_frequency.ولم يظهر أي منهم ليكون كبيرا. في ترتيب اختيار نتائج الترميز الحسابي، سيتم اعتبار النموذج صارما (بالمعنى المحدد أعلاه). يجب أن يرسل التشفير الحسابي بتات إضافية إلى نهاية كل نص، وبالتالي بذل جهود إضافية لإكمال النص لإزالة الغموض مع الحرف الأخير من الإجراء Done_encoding() يرسل قطعتين. في الحالة التي يجب فيها حجب تدفق البتات في رموز ذات 8 بتات قبل التشفير، سيكون من الضروري الالتفاف حول نهاية الكتلة. قد يتطلب هذا المزيج بالإضافة إلى ذلك 9 أجزاء 10^-4 تظهر تكلفة استخدام العمليات الحسابية ذات الدقة المحدودة في تقليل بقايا القسمة، ويمكن ملاحظة ذلك عند مقارنتها بالإنتروبيا النظرية، التي تستمد الترددات من العدادات التي يتم قياسها بشكل مماثل أثناء التشفير. هنا التكاليف ضئيلة - حولبت/حرف. التكاليف الإضافية لعدادات القياس أعلى إلى حد ما، ولكنها لا تزال صغيرة جدًا. للنصوص القصيرة (أقل من 2^14بايت) لا يوجد شيء. ولكن حتى مع وجود النصوص في 10^5 - 10^6 بايت ناك-التكاليف العادية المحسوبة تجريبيا أقل من 0.25%من السلسلة المشفرة.النموذج التكيفي في البرنامج عند وجود تهديد بتجاوز إجمالي الترددات المتراكمة القيمة التردد الأقصى، 6-7 يقلل جميع العدادات. وهذا يؤدي إلى حقيقة أنه من الصعب تقييم الأحداث الأخيرة مقارنة بالأحداث السابقة. وبالتالي، يميل الأسس إلى تتبع التغييرات في تسلسل الإدخال، وهو ما يمكن أن يكون مفيدًا جدًا. (لقد واجهنا حالات تم فيها تقييد العدادات بـأعطت البتات نتائج أفضل من زيادة الدقة الحسابية.) بالطبع، يعتمد هذا على المصدر الذي تم تطبيق النموذج عليه.تنفيذ محدود. يمكن تعميم القيود المتعلقة بطول الكلمة والتي تسببها إمكانية التجاوز من خلال مراعاة تمثيل عدادات التردد بتات f وقيم_الرمز - جأجزاء. سيعمل البرنامج بشكل صحيح عندما F و و + ج حيث صهي الدقة الحسابية. في معظم التطبيقات سي ع = 31،إذا كنت تستخدم الأعداد الصحيحة مثل طويلة، و ع = 32 - لفترة طويلة غير موقعة.في برنامجنا f=14 و ج = 16.مع التغييرات المناسبة في الإعلانات على يمكن استخدام الطويل غير الموقع f=15 وc=17.بلغة التجميع ج=16هو خيار طبيعي لأنه يسرع بعضالعمليات الأساسية للمقارنة ومعالجة البتات. إذا كنت الحد ص 16بت، ثم أفضل القيم الممكنة لـ c و وهناك وفقا لذلك 9 و 7،الذي لا يسمح بالتشفير الأبجدية الكاملة من 256 26 الأحرف، حيث أن كل واحد منهم سيكون له قيمة عداد واحدة على الأقل. مع أبجدية أصغر (على سبيل المثال، من(أحرف أو قيم 4 بت) لا يزال بإمكانك التعامل معها.انتهاء.عند الانتهاء من عملية الترميز، من الضروري إرسال حرف نهائي فريدللتأكد من أن السلسلة المشفرة تقع في الفاصل الزمني للعمل النهائي. لأن إجراء Done_encoding() يمكن التأكد من ذلكمنخفضة وعالية يقتصر إما على التعبير(1أ) أو (1ب)، فهي تحتاج فقط إلى إرسال 01 أو 10 وفقا لذلك، لإزالة ما تبقى من عدم اليقين. من الملائم القيام بذلك باستخدام الإجراء الذي تمت مناقشته مسبقًا bit_plus_follow(). الإجراء input_bit() سوف يقرأ في الواقع المزيد من البتات من تلكput_bit()،لأنها تحتاج إلى الحفاظ على الحشوة السفليةنهاية المخزن المؤقت. لا يهم ما هو معنى هذه البتات، منذ EOFيتم تحديده بشكل فريد من خلال البتات الأخيرة المرسلة.لقد دمرت جميع المراجع الدقيقة لبرنامج C الخاص بالمؤلف، ولكن في نفس الوقت تركت معلومات حول العلاقات بين أسماء المتغيرات -nal والإجراءات الكافية لاستعادة المنطقالبرامج. تم تصميم البرنامج بشكل سيء للغاية وبالتالي فهو غير محتملسيكون مفيدًا لك (لج يمكنك بسهولة الكتابة الخاصة بك)، لذلك نضعتم تنفيذ إصدار المجمع الخاص بهفيتامين" وتسارع بواسطتي دون تغيير الخوارزمية. لتحقيق سرعة أعلىسرعة التفريغ (سرعة التعبئة أقل أهمية) يجب قياسهاالموضوع بخصوص تحديث النموذج والبحث. الخوارزمية في أي تقريباالحالة، سيتعين عليك التغيير، حيث يتم دعم كل شيء فقط 256 حرفا ويتم تخزين نموذج واحد فقط في المرة الواحدة - وهذا لا يكفيلكتابة رازم جيد. سم. ARIF16m.H في التطبيق.

النسخة الكلاسيكية من الخوارزمية

يتم استبدال ضغط هوفمان تدريجيًا بالضغط الحسابي. وقد لعب دور في ذلك حقيقة أن براءات الاختراع التي تحد من استخدام الضغط الحسابي قد انتهت صلاحيتها. بالإضافة إلى ذلك، تقوم خوارزمية هوفمان بتقريب التكرارات النسبية لحدوث الأحرف في الدفق من خلال الترددات التي تكون مضاعفات قوى العدد اثنين (على سبيل المثال، للأحرف ا ب ت ثمع الاحتمالات 1/2، 1/4، 1/8، 1/8 سيتم استخدام الرموز O، 10، 110، 111)، والضغط الحسابي يعطي درجة أفضل لتقريب التردد. وفقًا لنظرية شانون، نحصل على أفضل ضغط في الحساب الثنائي إذا قمنا بتشفير رمز بتردد نسبي f باستخدام بتات -log 2 (f).

0.3 0,4 0.5 0.6 0.7

تردد الرمز النسبي

"^~" الضغط الأمثل
---- طريقة هوفمان

أرز. 1.1. رسم بياني يقارن بين التشفير الأمثل وترميز هوفمان

يقارن الرسم البياني أعلاه بين التشفير الأمثل وترميز هوفمان. يمكن أن نرى بوضوح أنه في الحالة التي لا تكون فيها الترددات النسبية قوى لاثنين، يصبح الضغط أقل كفاءة (ننفق بتات أكثر من اللازم). على سبيل المثال، إذا كان لدينا حرفين أو بمع الاحتمالات 253/256 و3/256، فمن الأفضل أن ننفق على سلسلة من 256 بايت -log 2 (253/256)-253-bg 2 (3/256)-3 = 23.546، أي 24 بت. في ترميز هوفمان نقوم بالتشفير أو كوميرسانتمثل 0 و1 وسيتعين علينا إنفاق 1 -253+1 -3=256 بت، أي 10 مرات أكثر. لنفكر في خوارزمية تعطي نتيجة قريبة من المستوى الأمثل.

يعد الضغط الحسابي طريقة أنيقة إلى حد ما تعتمد على فكرة بسيطة جدًا. نحن نمثل النص المشفر ككسر، ونقوم ببناء الكسر بطريقة يتم فيها عرض النص بشكل مضغوط قدر الإمكان. على سبيل المثال، النظر في بناء مثل هذا الكسر على الفاصل الزمني؛ قبل الميلاد])،والفاصل الزمني لرمز الدفق المشفر /th هو كما يلي؛ قبل الميلاد])،بما في ذلك 0.341. من خلال البحث في جميع الرموز الممكنة في الجدول أعلاه، نجد أن الفاصل الزمني فقط هو -(fti-j - li-i)؛ أهلاً= لي.!+ ب ■ (مرحبا! - li.i)؛لو ((ل ت<= value) && (value < أهلاً))استراحة؛ ); DataFile.WriteSymbol(c^) ;

حيث القيمة هي الرقم (الكسر) المقروء من الدفق، و مع -الأحرف غير المعبأة المكتوبة إلى دفق الإخراج. عند استخدام أبجدية مكونة من 256 حرفًا سي جيهتستغرق الحلقة الداخلية وقتًا طويلاً حتى تكتمل، ولكن يمكن تسريعها. لاحظ أنه منذ ذلك الحين ب[ج^ (\=أ؛ IIديتيل=10

First_qtr - (ح 0 +ل)/4؛ // - 16384

نصف = First_qtr*2; // - 32768

Third_qtr - First_qtr*3; // = 49152

bits_to_follow =0; // كم عدد البتات المراد إعادة تعيينها

بينما (ليس DataFile.EOFO) (

ج = DataFile.ReadSymbol(); // اقرأ الرمز
ي= IndexForSymbol(c); أنا++; // ابحث عن فهرسه
لى= li.j + ب*(ح ط .1 - لى-x+l)/مقسم؛
أهلاً= لي.!+ ب;
First_qtr = (h 0 +l)/4; // = 16384

نصف = First_qtr*2; // = 32768

Third_qtr = First_qtr*3; // = 49152

value=CompressedFile.Readl6Bit();

ل(ط=ل;ط< CompressedFile.DataLengthO; i++){

التكرار=((القيمة-2 i .1 +l)*delitel-l)/(h i .I - 1 ± . X+ 1) ;

ل(ي=ل;ب<=freq; j++); // Поиск символа

لى = 1+ بلج-ل]*(ثنائية!- لى- ش + ل)/ديليتيل؛

أهلاً= أنا+ ب*(ح ط .1 - لى.!+ ل)/ديليتيل - 1؛

for(;;) ( // خيارات العملية

إذا (مرحبا< Half) // переполнения

; // لا شيء آخر ifdi >= النصف) (

2i-= نصف؛ hi-= نصف; value-= نصف; )

وإلا إذا (di >= First_qtr)&& (hi< Third_qtr)) { 2i-= First_qtr; hi-= First_qtr; value-= First_qtr,-} else break; 2i+=2 i; hi+= hi+1;

value+=value+CompressedFile.ReadBit(); } DataFile.WriteSymbol(c););

يمارس. تقديم أمثلة على التسلسلات المضغوطة بواسطة الخوارزمية ذات المعاملات القصوى والدنيا.

كما ترون، نحن نتعامل مع الأخطاء الحسابية عن طريق إجراء عمليات منفصلة على / و A، بشكل متزامن في الضاغط وأداة إلغاء الضغط.

تحدث خسائر طفيفة في الدقة (كسور النسبة المئوية لملف كبير بما فيه الكفاية)، وبالتالي، انخفاض في نسبة الضغط مقارنة بالخوارزمية المثالية أثناء عملية التقسيم، عند تقريب الترددات النسبية إلى عدد صحيح، عند كتابة البتات الأخيرة إلى الملف. يمكن تسريع الخوارزمية من خلال تمثيل الترددات النسبية بحيث يكون المقسوم عليه من قوة اثنين (أي استبدال القسمة بعملية إزاحة بت).

من أجل تقدير درجة ضغط سلسلة معينة بواسطة خوارزمية حسابية، تحتاج إلى العثور على الحد الأدنى لعدد ن،بحيث يكون طول الفاصل الزمني للعمل عند ضغط الحرف الأخير من السلسلة أقل من 1/2^.. ويعني هذا المعيار أنه ضمن الفاصل الزمني الخاص بنا سيكون هناك بالتأكيد رقم واحد على الأقل في التمثيل الثنائي الذي بعده ن-روستكون العلامة 0 فقط. من السهل حساب طول الفاصل الزمني، لأنه يساوي حاصل ضرب احتمالات جميع الرموز.

خذ بعين الاعتبار المثال المذكور سابقًا لسلسلة مكونة من حرفين l و كوميرسانتبالاحتمالات 253/256 و3/256. طول الفاصل الزمني الأخير للعمل لسلسلة مكونة من 256 حرفًا أو بمع الاحتمالات المشار إليها تساوي من السهل حساب أن N المرغوب فيه = 24 (1/2 24 = 5.96-10" 8)، نظرًا لأن 23 يعطي فاصلًا كبيرًا جدًا (أعرض مرتين)، و25 ليس كذلك الحد الأدنىالرقم الذي يستوفي المعيار. لقد تبين أعلاه أن خوارزمية هوفمان تقوم بتشفير هذه السلسلة إلى 256 بت. أي أنه على سبيل المثال، تعطي الخوارزمية الحسابية ميزة عشرة أضعاف على خوارزمية هوفمان وتتطلب أقل من 0.1 بت لكل رمز.

يمارس.حساب تقدير نسبة الضغط للصف "CAB.BOX".

ينبغي أن يقال بضع كلمات عن خوارزمية الضغط الحسابي التكيفي. فكرته هي إعادة ترتيب جدول الاحتمالات ب [و]أثناء التعبئة والتفريغ مباشرة عند استلام الرمز التالي. لا تتطلب هذه الخوارزمية حفظ قيم احتمالية الرمز في ملف الإخراج، وكقاعدة عامة، توفر نسبة ضغط أعلى. لذلك، على سبيل المثال، يمكن ضغط ملف بالصيغة a 1000 £ 1000 c 1000 b/ 1000 (حيث تعني الدرجة عدد مرات تكرار رمز معين) بواسطة خوارزمية تكيفية أكثر كفاءة من إنفاق 2 بت لكل رمز. تتحول الخوارزمية المذكورة أعلاه ببساطة إلى خوارزمية تكيفية. في السابق، قمنا بحفظ جدول النطاق في ملف، لكننا الآن نحسب مباشرة أثناء عمل الضاغط وأداة إلغاء الضغط، ونعيد حساب الترددات النسبية، ونضبط جدول النطاق وفقًا لها. من المهم أن تحدث التغييرات في الجدول في الضاغط وأداة إزالة الضغط بشكل متزامن، أي على سبيل المثال بعد الترميزالسلاسل التي يبلغ طولها 100 يجب أن يكون جدول النطاق هو نفسه تمامًا كما هو بعد فك التشفيرسلاسل بطول 100. من السهل تحقيق هذا الشرط إذا قمت بتغيير الجدول بعدتشفير وفك الرمز التالي. لمزيد من المعلومات حول الخوارزميات التكيفية، راجع الفصل. 4.

خصائص الخوارزمية الحسابية:

أفضل وأسوأ نسبة ضغط: الأفضل > 8 (ترميز محتمل أقل من بت لكل حرف)، الأسوأ - 1.

مزايا الخوارزمية: توفر نسبة ضغط أفضل من خوارزمية إيقاع هوفمان (على البيانات النموذجية بنسبة 1-10%).

صفات:تمامًا مثل تشفير هوفمان، فهو لا يزيد حجم البيانات الأصلية في أسوأ الحالات.

الترميز الفاصل

على عكس الخوارزمية الكلاسيكية، يفترض التشفير الفاصل أننا نتعامل مع كميات صحيحة منفصلة يمكن أن تأخذ عددًا محدودًا من القيم. كما ذكرنا من قبل، يتم كتابة الفاصل الزمني الأولي في حساب الأعداد الصحيحة في النموذج [OD) أو حيث ن-عدد القيم الممكنة للمتغير المستخدم لتخزين حدود الفاصل الزمني.

لضغط البيانات بكفاءة أكبر، يجب علينا تشفير كل حرف سعبر -log 2 (Ј) بت، حيث - تردد الرمز س.بالطبع، في الممارسة العملية، لا يمكن تحقيق هذه الدقة، ولكن يمكننا تحقيق ذلك لكل شخصية ستخصيص مجموعة من القيم في الفاصل الزمني , Prev_freq[c], 10) ;

نتيجة

تطبيع

تطبيع

تطبيع

كما ذكرنا من قبل، في أغلب الأحيان لا يحدث أي نقل أثناء التطبيع. وبناءً على ذلك، اقترح ديمتري سوبوتين 1 التخلي عن النقل تمامًا. اتضح أن خسائر الضغط ضئيلة للغاية، في حدود عدة بايت. ومع ذلك، فإن الزيادة في السرعة لم تكن ملحوظة أيضًا. الميزة الرئيسية لهذا النهج هي بساطة الكود وضغطه. إليك ما تبدو عليه وظيفة التسوية لحسابات 32 بت:

♦تعريف الكودبيتس 24

♦تعريف TOP (l«CODEBITS)

♦حدد القاع (الأعلى»8)

♦تعريف BIGBYTE (0xFF«(CODEBITS-8))

باطلة encode_normalize(void) ( while(range< BOTTOM) {

إذا (منخفض & BIGBYTE == BIGBYTE &&

النطاق + (منخفض & BOTTOM-1) >= BOTTOM) النطاق = BOTTOM - (منخفض & BOTTOM-1)؛ output_byte(low"24); يتراوح<<=8; low«=8; })

يمكنك أن ترى أن التخفيض القسري في قيمة حجم الفاصل الزمني يسمح لنا بتجنب النقل. انه يحدث

ثم، عندما يأخذ ثاني أعلى بايت منخفض القيمة OxFF، وعند إضافة قيمة نطاق حجم الفاصل الزمني إلى المستوى المنخفض، يحدث حمل. هذا ما يبدو عليه إجراء التطبيع الأمثل:

باطل encode_normalize (باطل) (بينما ((منخفض "منخفض + نطاق)" } }

باطلة decode_normalize (باطلة) (بينما ((منخفض منخفض + نطاق) }

يمارس.تطبيق ترميز متباعد دون التفاف إلى سلسلة "البقرة. البقرة".

في الوقت الحاضر هناك العديد من خوارزميات ضغط المعلومات. معظمها معروف جيدًا، ولكن هناك أيضًا بعض الخوارزميات الفعالة جدًا، ولكن مع ذلك غير معروفة كثيرًا. يتحدث هذا المقال عن طريقة الترميز الحسابي، وهي أفضل طرق الإنتروبيا، لكن مع ذلك قليل من الناس يعرفون عنها.
قبل الحديث عن الترميز الحسابي، علينا أن نقول بضع كلمات عن خوارزمية هوفمان. تكون هذه الطريقة فعالة عندما تكون ترددات الرمز متناسبة مع 1/2 n (حيث n عدد طبيعي موجب). تصبح هذه العبارة واضحة إذا تذكرنا أن رموز هوفمان لكل رمز تتكون دائمًا من عدد صحيح من البتات. خذ بعين الاعتبار الحالة التي يكون فيها تكرار ظهور الرمز 0.2، فيجب أن يكون طول الكود الأمثل لتشفير هذا الرمز هو –log 2 (0.2) = 2.3 بت. من الواضح أن رمز بادئة هوفمان لا يمكن أن يكون له مثل هذا الطول، أي. وهذا يؤدي في النهاية إلى ضعف ضغط البيانات.
تم تصميم الترميز الحسابي لحل هذه المشكلة. الفكرة الرئيسية هي تعيين رموز ليس للشخصيات الفردية، ولكن لتسلسلاتها.
أولاً، دعونا نلقي نظرة على الفكرة وراء الخوارزمية، ثم نفكر في مثال عملي صغير.
كما هو الحال مع جميع خوارزميات الإنتروبيا، لدينا معلومات حول تكرار استخدام كل حرف من الحروف الأبجدية. هذه المعلومات هي نقطة البداية للطريقة قيد النظر. الآن دعونا نقدم مفهوم قطاع العمل. الفاصل الزمني للعمل يسمى نصف الفاصل الزمني)