Метод Шеннона-Фано

Поделиться
HTML-код
  • Опубликовано: 30 сен 2024
  • Метод оптимального кодирования Шеннона-Фано позволяет минимизировать избыточность кода. Под кодированием понимается процесс отображения одного набора знаков в другой: представление символов одного (исходного) алфавита в виде символов другого (кодового) алфавита. никакое кодовое слово не должно быть началом никакого другого кодового слова. Код, полученный методом Шеннона-Фано, удовлетворяет условию Фано или принципу префиксности: никакое кодовое слово не должно быть началом никакого другого кодового слова.

Комментарии • 49

  • @nahodkiWB309
    @nahodkiWB309 7 лет назад +40

    Спасибо за понятное объяснение!

    • @romantsarev1145
      @romantsarev1145  7 лет назад +2

      Вера, рад что Вам понравилось.

  • @infup
    @infup 2 года назад +10

    Отличное объяснение! Спасибо.

  • @Sasha-bm1df
    @Sasha-bm1df 5 лет назад +9

    Очень доходчиво. Спасибо !

  • @Artem-u5e9c
    @Artem-u5e9c Год назад +4

    Спасибо большое. Очень понятное объяснение.

  • @markysermak6546
    @markysermak6546 5 лет назад +4

    ничего не понятно, но очень интересно

    • @romantsarev1145
      @romantsarev1145  5 лет назад

      Твой комментарий порадовал меня

  • @oxygensss4390
    @oxygensss4390 4 года назад +2

    Тему понял, но я не знаю зачем это и где пригодится. Объясните пожалуйста

    • @perfpg8691
      @perfpg8691 3 года назад

      В моем институте в ближайшее время мы будем писать архиватор на си, с помощью этого метода

  • @masterenot
    @masterenot 2 дня назад

    спасибо

  • @НікітаПронов
    @НікітаПронов 2 года назад +1

    Здравствуйте, замечательный разбор, а не подскажете как делятся группы например при вероятностях 0.4 0.2 0.4?
    В какую группу относим второй элемент, к первому или к последнему? Просто разность вероятности 2ух групп в таком случае одинакова

    • @romantsarev1145
      @romantsarev1145  2 года назад +1

      Здравствуйте! На Ваше усмотрение.

  • @priest_of_art
    @priest_of_art 6 месяцев назад

    А доказательство эффективности где?

    • @romantsarev1145
      @romantsarev1145  6 месяцев назад

      Нету. Не ставил такой цели

  • @ЧеловекБезСлезинки
    @ЧеловекБезСлезинки 3 года назад +1

    Спасибо за хорошее объяснение, но есть вопрос.
    Чем Шеррон-Фано отличается от Хаффмана? Просто записано буквально одинаково.

    • @romantsarev1145
      @romantsarev1145  3 года назад +5

      В метода Хаффмана мы всегда выбираем минимальные вероятности (сначала среди вероятностей отдельных символов, потом уже и сумм вероятностей). При этом, сортировать предварительно вообще не обязательно. В методе же Ш-A это обязательное условие. Например, этим отличается.
      В большинстве случаев длина последовательности, сжатой по методу Шеннона - Фано, равна длине сжатой последовательности с использованием кодирования Хаффмана. Однако на некоторых последовательностях могут сформироваться неоптимальные коды Шеннона - Фано, поэтому более эффективным считается сжатие методом Хаффмана (с) Википедия: ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A8%D0%B5%D0%BD%D0%BD%D0%BE%D0%BD%D0%B0_%E2%80%94_%D0%A4%D0%B0%D0%BD%D0%BE

  • @Bezon4ik
    @Bezon4ik 5 лет назад +3

    Спасибо, помог

  • @psbd758
    @psbd758 4 года назад

    Благодарочку кидаю

  • @Вадим-ъ2р8э
    @Вадим-ъ2р8э 3 года назад

    Здравствуйте Роман могли бы мне помочь с решением похожей задачи?

    • @romantsarev1145
      @romantsarev1145  Год назад

      Полагаю, что уже не актуально. Что-то не заметил Вашего комментария в свое время. Лучше было на биржу фриланса обратиться. Там бы точно помогли.

  • @mihrankhachatryan3693
    @mihrankhachatryan3693 4 года назад

    Вот почему не можно в универе так объяснить?????????

    • @romantsarev1145
      @romantsarev1145  4 года назад +4

      Отчего же?! Именно так в Сибирском федеральном университете и преподаю.

  • @qwiy5955
    @qwiy5955 4 года назад

    в конце не понял, как добиваются однозначности декодирования?

    • @romantsarev1145
      @romantsarev1145  4 года назад +1

      Ни одно кодовое слово не является началом другого кодового слова. То есть, нет ситуации, когда один символ закодирован, например, как 11, а другой - 110, и непонятно при считывании второй единицы (при декодировании) это уже первый символ закончился или второй еще идет. Это называется выполнением принципа префиксности или соблюдением условия Фано.

  • @РинатИдрисов-ч8ъ
    @РинатИдрисов-ч8ъ 4 года назад

    такой вопрос : я получил кодовые значения для каждого символа но я не могу понять надо считывать длину кодовой комбинации ? Просто мне надо использовать формулу для уменьшения средней длины кодовой комбинации.

    • @romantsarev1145
      @romantsarev1145  4 года назад

      Метод Шеннона-Фано дает оптимальный код. Код тем оптимальнее, чем средняя длина кодового слова ближе к минимально возможной. Так что, если Вы хотите узнать насколько код оптимален, то нужно посчитать одно и второе.

    • @РинатИдрисов-ч8ъ
      @РинатИдрисов-ч8ъ 4 года назад

      @@romantsarev1145 Спасибо большое за ответ !

  • @den-ned
    @den-ned 2 года назад

    Спасибо. Скоро начну изучать программирование, пока не знаю пригодится ли мне эта тема, но посмотреть было интересно.

    • @romantsarev1145
      @romantsarev1145  Год назад +1

      Ну, как, пригодилось?

    • @den-ned
      @den-ned Год назад

      @@romantsarev1145 Нет, программирование стало менее актуальным с тех пор, и с осени прошлого года перестал его изучать и занялся другой деятельностью, вполне успешно)

  • @levkornev1013
    @levkornev1013 3 года назад

    Не совсем понятно как двоичный код может обеспечить префиксность если количество элементов больше 8

    • @romantsarev1145
      @romantsarev1145  3 года назад

      Принцип префиксности - ни одно кодовое слово не может быть началом другого кодового слова. Одно должно выполняться всегда и не зависит ни от системы счисления, ни от числа элементов.

    • @levkornev1013
      @levkornev1013 3 года назад

      @@romantsarev1145 тогда не понимаю, как в двоичном коде можно соблюсти этот принцип невзирая на количество кодируемых символов... (на сколько я понял, префиксность проявляется при записи двоичного кода в ряд без разделения)

    • @romantsarev1145
      @romantsarev1145  3 года назад

      @@levkornev1013 Вы поняли верно. Принцип префиксности позволяет ОДНОЗНАЧНО декодировать символы закодированного сообщения, которые идут сплошняком. Но мне не понятно, что Вам не понятно. Возможно повторный просмотр видео снимет возникшие вопросы. Если нет, задайте их более развернуто.

    • @levkornev1013
      @levkornev1013 3 года назад

      @@romantsarev1145 спасибо за ответ, разобрал пример и понял что трактуется однозначно

  • @raydenshow9952
    @raydenshow9952 6 лет назад +1

    Спасибо вам большое за объеснение

  • @stivensti2031
    @stivensti2031 Год назад

    автору западло пример привести?

    • @romantsarev1145
      @romantsarev1145  Год назад +1

      Приятно, что на зоне нас тоже смотрят. Для невнимательных: пример начинается на 0:30 и заканчивается на 3:40. И уже потом описание метода в общем виде.

  • @almazmukushev5993
    @almazmukushev5993 4 года назад

    У кого есть готовый код на джаве. Шеннона фано??? Или Хаффмана?

    • @nanashi106
      @nanashi106 3 года назад

      Есть на с++

    • @almazmukushev5993
      @almazmukushev5993 3 года назад

      @@nanashi106 можешь скинуть

    • @almazmukushev5993
      @almazmukushev5993 3 года назад

      @@nanashi106 А код Хэмминга есть?

    • @nanashi106
      @nanashi106 3 года назад

      @@almazmukushev5993 Нет, только Шеннона-фано и Хаффмана

    • @zhanabaizhuzupov3031
      @zhanabaizhuzupov3031 3 года назад

      @@nanashi106 можете ли мне отпр