Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Программа дисциплины'
федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «новосибирский государственный педагогический у...полностью>>
'Документ'
Цель лекции: Познакомиться с историей развития социальной мысли в России XIX - начала XX века и основными социальными мыслителями и социологами этого ...полностью>>
'Руководство'
Руководство сайта «iDefence» не несёт ответственности за предоставленную информацию, равно как и за её достоверность. Воспроизведение или перепечатка ...полностью>>
'Документ'
Реши задачу. За одинаковых альбомов заплатили 540 рублей. Сколько таких же альбомов можно купить на 900 рублей? 3. Найди значение выражения: ( 7 043 –...полностью>>

Главная > Решение

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

B8

Тема: Анализ алгоритма построения последовательности.

Что нужно знать:

  • в некоторых задачах (на RLE-кодирование, см. далее) нужно знать, что такое бит и байт, что байт равен 8 бит, что такое старший бит, как переводить числа из двоичной системы в десятичную

  • в классических задачах (на символьные цепочки) каких-либо особых знаний из курса информатики, кроме умения логически мыслить, не требуется

Пример задания:

Строки (цепочки символов латинских букв) создаются по следующему правилу. Первая строка состоит из одного символа – латинской буквы «А». Каждая из последующих цепочек создается такими действиями: в очередную строку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i-м шаге пишется «i»-я буква алфавита), к ней справа дважды подряд приписывается предыдущая строка. Вот первые 4 строки, созданные по этому правилу:

(1) A

(2) BAA

(3) CBAABAA

(4) DCBAABAACBAABAA

Латинский алфавит (для справки): ABCDEFGHIJKLMNOPQRSTUVWXYZ

Запишите семь символов подряд, стоящие в восьмой строке со 126-го по 132-е место (считая слева направо).

Решение:

  1. используя приведенное правило, можно построить следующие строки:

(5) EDCBAABAACBAABAADCBAABAACBAABAA

(6) FEDCBAABAACBAABAADCBAABAACBAABAAEDCBAABAACBAABAADCBAA
BAACBAABAA

...

  1. мы быстро убедимся, что следующие строки получаются достаточно длинные, и легко запутаться, отсчитывая символы с номерами 126-132 в восьмой строке

  2. попробуем найти закономерности, позволяющие решить задачу без выписывания 8-ой строки;

  3. прежде всего, заметим, что длины первых строк 1, 3, 7, 15, … – это числа вида 2i-1, где i – номер строки; таким образом, длина 7-ой строки – 127, а длина восьмой – 255 символов

  4. восьмая строка строится так: восьмая буква латинского алфавита (H) и затем – два раза седьмая строка (сверху написаны номера символов)

    1

    2

    128

    129

    255

    H

    GFEDC…

    ...AABAA

    GFEDC…

    ...AABAA

  5. символы 126-132 находятся на границе двух цепочек, повторяющих 7-ую строку; заметим, что в соответствии с заданным алгоритмом можно легко определить первые символы в 7-ой строке (GFEDC) и последние символы (AABAA)

  6. далее сразу находим, что интересующая нас часть 8-ой строки имеет вид

    125

    126

    127

    128

    129

    130

    131

    132

    133

    A

    B

    A

    A

    G

    F

    E

    D

    C

  7. таким образом, правильный ответ – BAAGFED.

Возможные ловушки и проблемы:

  • можно, конечно, попробовать выписать заданную строку и выделить нужные символы, но этот подход очень трудоемкий и чреват случайными ошибками

  • чаще всего заданная цепочка находится на границе, где соединяются две части строки (например, в этом задании – на границе двух последовательностей, совпадающих с 7-ой строкой)

  • в задачах этого типа часто встречается игра на последовательностях вида

2k: 1, 2, 4, 8, 16, …

2k-1: 1, 3, 7, 15, 31, …

полезно помнить формулу, которая «сворачивает» сумму степеней двойки:

1 + 2 + 4 + 8 + … + 2k = 2k+1 - 1

(для доказательства используйте тот факт, что двоичное число, состоящее только из единиц, имеет вид 2n-1)

Еще пример задания:

Упаковка информации методом RLE-кодирования состоит в следующем. Упакованная последовательность содержит управляющие байты, за каждым управляющим байтом следует один или несколько байтов данных. Если старший бит управляющего байта равен 1, то следующий за управляющим байт данных при распаковке нужно повторить столько раз, сколько записано в оставшихся 7 битах управляющего байта. Если же старший бит управляющего байта равен 0, то надо взять несколько следующих байтов данных без изменения. Сколько именно – записано в оставшихся 7 битах управляющего байта. Например, управляющий байт 10000111 говорит о том, что следующий за ним байт надо повторить 7 раз, а управляющий байт 00000100 – о том, что следующие за ним 4 байта надо взять без изменений.
После кодирования методом RLE получилась следующая последовательность байтов (первый байт – управляющий):

10000011 10101010 00000010 10101111 11111111 10000101 10101010.

Сколько байт будет содержать данная последовательность после распаковки? Впишите в бланк только число.

Решение:

  1. обратите внимание, что в этой задаче НЕ нужно распаковывать последовательность, а нужно просто определить ее длину

  2. проанализируем первый управляющий байт, 10000011; он начинается с 1 – это команда на повторение следующего символа; количество повторений записано в семи младших битах: 112 = 3 раза; значит, раскодирование первых двух байт дает 3 символа

  3. следующий управляющий байт – третий, 00000010; его старший бит 0 говорит о том, что следующие 102 = 2 символа повторяются 1 раз; получаем еще 2 символа

  4. следующий управляющий байт – шестой, 10000101; он говорит о том, что следующий за ним символ нужно повторить 1012 =5 раз; получаем еще 5 символов

  5. полная длина распакованной последовательности равна 3 + 2 + 5 = 10 символов

  6. вот итог нашего анализа:

    управляющий

    байты 1-3

    управляющий

    байт 4

    байт 5

    управляющий

    байты 6-10

    10000011

    10101010

    00000010

    10101111

    11111111

    10000101

    10101010

  7. таким образом, правильный ответ – 10.

Еще пример задания:

Строки (цепочки символов латинских букв) создаются по следующему правилу. Первая строка состоит из одного символа – латинской буквы «А». Каждая из последующих цепочек создается такими действиями: в очередную строку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i-м шаге пишется «i»-я буква алфавита), к ней справа дважды подряд приписывается предыдущая строка. Вот первые 4 строки, созданные по этому правилу:

(1) A

(2) BAA

(3) CBAABAA

(4) DCBAABAACBAABAA

Латинский алфавит (для справки): ABCDEFGHIJKLMNOPQRSTUVWXYZ

Сколько в восьмой строке букв, отличных от буквы «А»?

Решение (1 вариант):

  1. попробуем найти закономерность в изменении количества букв, отличных от буквы «A»

  2. в первой строке 0 таких букв, во второй – 1 (удвоили число букв «не A» в предыдущей строке и добавили 1, поскольку в начало строки дописана буква «B»)

  3. аналогично находим, что в третьей строке – 3 нужных буквы, в 4-ой – 7 и т.д.

  4. продолжим последовательность, каждый раз умножай предыдущее число на 2 и добавляя единицу:

5 строка – 15

6 строка – 31

7 строка – 63

8 строка – 127

  1. «умные и ленивые» могут сообразить, эти числа задаются общей формулой , где N – номер строки, подстановка дает , что совпадает с полученным выше результатом

  2. таким образом, правильный ответ – 127.

Решение (2 вариант):

  1. можно поступить иначе: сначала найти количество букв «A», а затем вычесть его из общей длины восьмой строки

  2. видно, что длины строк задаются уже знакомой последовательностью 1, 3, 7, 15, …, или а общем виде – , где N – номер строки; подстановка дает

  3. количество букв «A» с каждой строкой увеличивается в 2 раза: 1, 2, 4, …; это степени двойки, , где N – номер строки; для 8-ой строки получаем букв «A»

  4. итак, в 8-ой строке всего 255 символов, из них 128 – это буквы «А»

  5. теперь находим количество букв, отличных от буквы «A»:

  6. таким образом, правильный ответ – 127.

Еще пример задания:

Строки (цепочки символов латинских букв) создаются по следующему правилу. Первая строка состоит из одного символа – латинской буквы «А». Каждая из последующих цепочек создается такими действиями: в очередную строку сначала дважды подряд записывается предыдущая строка, а потом справа приписывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i-м шаге пишется «i»-я буква алфавита). Вот первые 4 строки, созданные по этому правилу:

(1) A

(2) AAB

(3) AABAABC

(4) AABAABCAABAABCD

Латинский алфавит (для справки): ABCDEFGHIJKLMNOPQRSTUVWXYZ

Запишите шесть символов подряд, стоящие в восьмой строке со 101-го по 106-е место (считая слева направо).

Решение:

  1. сначала подсчитаем общую длину 8-ой строки; длины строк изменяются согласно последовательности 1, 3, 7, 15, … (каждое следующее число равно удвоенному предыдущему плюс 1); таким образом, для 8-ой строки получаем длину 255 (можно было также использовать формулу , где N – номер строки)

  2. вспомним, как строится 8-ая строка: сначала дважды записана 7-ая строка, а затем – буква «H» (8-ой символ латинского алфавита)

    1

    127

    128

    254

    255

    AABAA…

    ...CDEFG

    AABAA…

    ...CDEFG

    H

  3. видим, что символы 101-106 находятся внутри первой части, она состоит из двух 6-х строк и буквы G:

    1

    63

    64

    126

    127

    AABAA…

    ...BCDEF

    AABAA…

    ...BCDEF

    G

  4. символы 101-106 находятся во второй копии 6-ой строки, которая состоит из двух 5-х строк и буквы F

    64

    94

    95

    125

    126

    AABAA…

    ...ABCDEF

    AABAA…

    ...ABCDE

    F

  5. символы 101-106 находятся во второй копии 5-ой строки, которая, в свою очередь, состоит из двух 4-х строк и буквы E

  6. рассмотрим копию 4-ой строки, которая в 8-ой строке начинается с символа 95:

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    A

    A

    B

    A

    A

    B

    C

    A

    A

    B

    A

    A

    B

    C

  7. интересующие нас символы выделены зеленым цветом

  8. таким образом, правильный ответ – CAABAA.

Решение (2 вариант):

  1. так же, как и в предыдущем варианте решения, сначала подсчитаем общую длину 8-ой строки; она равна 255

  2. вспомним, как строится 8-ая строка: сначала дважды записана 7-ая строка (длиной 127 символов), а затем – буква «H» (8-ой символ латинского алфавита), поэтому для решения задачи нужно найти символы 101-106 в 7-ой строке

  3. 7-ая строка находятся состоит из двух 6-х строк и буквы G:

    1

    63

    64

    126

    127

    AABAA…

    ...BCDEF

    AABAA…

    ...BCDEF

    G

  4. символы 101-106 находятся во второй копии 6-ой строки, которая начинается с позиции 64; таким образом, нужно найти символы 38-43 в 6-ой строке (из номеров 101-106 вычли 63 – длину первой копии 6-ой строки)

  5. 6-ая строка состоит из двух 5-х строк (длиной 31 символ) и буквы F

    1

    31

    32

    62

    63

    AABAA…

    ...ABCDEF

    AABAA…

    ...ABCDE

    F

  6. символы 38-43 находятся во второй копии 5-ой строки, которая начинается с позиции 32, таким образом, нужно найти символы 7-12 в 5-ой строке (из номеров 38-43 вычли 31 – длину первой копии 5-ой строки)

  7. 5-ая строка состоит из двух 4-х строк (длиной 15 символов) и буквы E; символы 7-12 находятся в первой копии 4-ой строки, то есть, нужно найти символы 7-12 в 4-ой строке

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    A

    A

    B

    A

    A

    B

    C

    A

    A

    B

    A

    A

    B

    C

  8. интересующие нас символы выделены зеленым цветом

  9. таким образом, правильный ответ – CAABAA.

Возможные проблемы:

  • главное – не запутаться в номерах символов, разбирая «вложение» строк



Похожие документы:

  1. Тема : Вычисление информационного объема сообщения (3)

    Документ
    ... Решение (вариант 2, анализ алгоритма): «прокрутив» начало алгоритма, можно заметить, что последовательные значения a – это ... повышенный уровень, время – 10 мин) Тема: Анализ алгоритма построения последовательности. Что нужно знать: в некоторых задачах ...
  2. Алгоритм построения траектории движения объектов в видеопотоке на основе оптического потока

    Документ
    Алгоритм построения траектории движения ... положения объекта на последовательности кадров является использование ... коэффициент Бхаттачарая). Как показал анализ литературных источников, существующие ... по точности отслеживания. Тем не менее, результаты ...
  3. Темы анализа и типы факторов 45 Этапы ситуационного анализа 47

    Программа
    ... анализе. Этап 3. Построение сети событий. Сеть событий графически иллюстрирует их хронологи­ческую последовательность ... . Тем самым можно сократить объем работы при построении собственной стратегии. Рассмот­рим алгоритм ...
  4. Тема: Циклические алгоритмы. Цикл с предусловием

    Документ
    ... Тема: Циклические алгоритмы. Цикл с предусловием. Очень многие алгоритмы, ... переходит опять к анализу условия вхождения в цикл ... чисел в непустой последовательности. Рассмотрим алгоритм решения. Пусть ... в цикле выполнять построение окружностей, меняя при ...
  5. Тема: «анализ финансового состояния деятельности предприятия (на примере фирмы ООО «геоинвестстрой»)

    Реферат
    ... КВАЛИФИКАЦИОННАЯ РАБОТА ТЕМА: «АНАЛИЗ ФИНАНСОВОГО СОСТОЯНИЯ ... анализа, включая проработку макетов аналитических таблиц, алгоритмов ... бухгалтерского баланса имеет последовательность его чтения, ... анализ. Данный вид анализа заключается в построении одной ...

Другие похожие документы..