Отправляет email-рассылки с помощью сервиса Sendsay

Алгоритмы для всех

  Все выпуски  

Алгоритмы, которые нам помогают


Служба Рассылок Городского Кота
Выпуск  5

Я тут подумал и решил, что сразу после бланка-шпаргалки давать рабочий бланк не стоит,
а нужно сначала дать некоторый промежуточный бланк с полными названиями полей и вариантами
значений в них.

Итак, сегодня в номере:
1) Учебный бланк для решания задач с полными названиями полей.
2) Рабочий бланк для решания задач.
3) Переписка с читателем.
4) Планы на будущее.

1) Учебный бланк для решания задач с полными названиями граф.

Итак, делаем:
- взять простой карандаш
- взять лист в клетку формата А4
- положить его вертикально
- отчеркните слева и справа вертикальные поля ~ по 2 клетки
- вправо от левого поля отчеркните сверху донизу графы на 3, 1 и 6 клеток в ширину
- влево от правого поля отчеркните сверху донизу графы на 3 и 5 клеток в ширину
  У вас должно получиться 6 граф на 3, 1, 6, ~18, 5 и 3 клетки в ширину.
- провести две горизонтали от левого КРАЯ страницы до правого ПОЛЯ, отступив сверху
на 5-6 и затем на 4 клетки
- в ячейках в левом поле записать (ориентируя надпись вертикально): в верхней - "название
графы", в нижней - "примеры значений"
- внести названия граф: 1) "дата записи (дз)", 2) "номер (#)",
1) "тип (т)", 4) "шаг (ш)", 5) "результат (рз)", 6)
"дерево (д)"
- внести примеры значений в графах: 1) "1.9.00, 31.12.00..." 2) "1,2,3..."
3) "цель (ц), действие (д), соображение (с), вопрос (в), ответ (о) ..."
4) "хлопнуть в ладоши, набить текст, обточить заготовку..." 5) "v
(сделано), о (отменено), ab0901.txt, деталь #3..." 6) а сюда возьмите значения
из таблицы в прошлом выпуске

2) Рабочий бланк для решания задач.
- взять простой карандаш
- взять лист в клетку формата А4
- положить его вертикально
- отчеркните слева и справа вертикальные поля ~ по 2 клетки
- вправо от левого поля отчеркните сверху донизу три графы по 1-й клетке в ширину
- влево от правого поля отчеркните сверху донизу графы на 3 и 5 клеток в ширину
  У вас должно получиться 6 граф на 1, 1, 1, ~25, 5 и 3 клетки в ширину.
- провести горизонталь от левого до правого поля, отступив сверху на 1 клетку
- внести названия граф: 1) "дз", 2) "#", 1) "т", 4)
(здесь перед названием поставить текущие дату и время) "шаг" , 5) "
рз", 6) "д"
  Поскольку вы записали текущую дату полностью сверху, в графе "дата записи
(дз)" можно писать только текущее число, - если решание  задачи займет больше
одного дня.

3) Переписка с читателем (Стасом).

>При  разработке алгоритмов часто возникают вопросы: "Что делать в этой
>ситуации?  А  что  делать  в  этом случае?" Как гарантировать, что все
>ситуации  были  предусмотрены?
  Во-первых, проверить не описаны ли эти проблемы в литературе. Самый простой способ
найти такую литературу - поиск по ключевому слову  "алгоритм" в электронных
каталогах библиотек. См., н-р, список эл. каталогов библиотек России, Украины, Белоруссии
и Прибалтики в
http://www.rba.ru:8101/ir/libraries.html
или каталог РГБ на http://www.rsl.ru . Во-вторых,
разузнать про возможные нежелательные ситуации у заказчика. В моем случае, - я являюсь
и заказчиком, и разработчиком, и исполнителем в одном лице, - я пишу алгоритм как
проще и быстрее. А дальше, если в ходе работы выявляются какие-то непредусмотренные
обстоятельства (довольно частый случай, надо сказать), я, продолжая кое-как работать
со старой версией, параллельно строю новую версию.

>Есть  ли  какие-нибудь  приемы  поиска
>забытых вариантов? Ведь именно в непредусмотренных ситуациях случаются
>ошибки.
>
>Как  проверить  алгоритм  на  правильность?  Как  найти  узкие места и
>лазейки?
  Если "тактически", то, приступая к работе, можно сделать два списка (типа
"рабочего бланка" выше): "Проблемы" и "Улучшить..."
и вносить туда соответственно (возможные будущие) проблемы (в произвольной форме)
и соображения по улучшению алгоритма (в форме шага из бланка-шпаргалки из 4-го выпуска,
- глагол в неопределенной форме совершенного вида и пр.). Связь между тем, ЧТО улучшить
(улучшить такой-то алгоритм или его часть) и КАК улучшить (н-р, заменить то-то на
то-то) - "низ - верх" (см. 3-й выпуск).
  Если "стратегически", то вероятно, помог бы "диверсионный подход"
Злотина, - самому пытаться всячески навредить на бумаге своему изделию, чтоб повысить
его устойчивость к реальным будущим неприятностям. Подход описан в: Б.Л.Злотин, А.В.Зусман
Решение исследовательских задач. Кишинев: МНТЦ "Прогресс", Картя Молдовеняскэ,
1991. Если кому-нибудь известна, скажем, ее электронная версия, я был бы благодарен
за ссылку.

>Как  сравнивать  алгоритмы? Желательно в цифрах. Как оценить
>качество алгоритма, его эффективность, сложность?
>
  Возможно, тут поможет: Кормен Т. и др. Алгоритмы: построение и анализ, М:МЦНМО,
1999.-955 с. Очень содержательная книжка.
  (Личное мнение: эффективность алгоритма меряется почти исключительно доходом, приносимым
им автору. :-) )

>Это неинтересно. Нужно что-нибудь яркое и изящное. Быстрая сортировка,
>рекурсияи  даже  простые  приемы программирования. Например, как найти
>повторы в списке? Как сгруппировать данные (без SQL)?
  Кажется, у Кормена про это есть.

>>>Мало интернет-ссылок в рассылке. Будет лучше, если твоя рассылка будет
>>>содержать  адреса  сайтов схожей тематики. Сложные или громоздкие вещи
>>   Честно говоря, я не знаю таких сайтов. Если тебе известны, буду
>> признателен за ссылки и обязательно включу их.
>
>Загляни на:
  Спасибо.

>www.algorithms.da.ru
  Неплохое место. Правда, алгоритмы там, главным образом, математические и компьютерные.
Снял пару предположительно полезных книжек: "Аналитические технологии для прогнозирования
и анализа данных", 1999 и С.Л.Сотник "Основы проектирования систем с искусственным
интеллектом", Днепродзержинск, 1997-1999. В последней в числе прочего излагается
и Половинкин. А это довольно близко к моим интересам.

>http://algo.ekoboka.com/algo-rus
  Сюда мне вообще не удалось зайти.

>www.citforum.ru
  А здесь алгоритмами и не пахнет.

>>>|Картинка стоит тысячи слов.
>>Но в моем случае имеет также значение то, что читатели учатся
>> (я надеюсь :-) ) работать по алгоритмам уже с самого начала.
>
>Ссылки  на  картинки  могли  бы  ускорить  понимание  предмета.  Более
>качественное  знание  даст  намного больше, чем следование алгоритмам.
  Ну, так никто и не мешает читателям, потрудившись над выполнением алгоритмов, создать
это самое "более качественное знание". :-)

>Для разработки алгоритмов иногда нужно яркое и образное мышление, а не
>механическая   бездумная   деятельность  (2  клетки  влево,  3  клетки
  Разработать алгоритм - это не самое трудное, а вот выполнить его... :-( Ну, кроме
тех случаев, когда он решает какую-нибудь мелкую вспомогательную задачу или предназначен
для компьютера. (Кто бы построил тот компьютер, чтоб мои алгоритмы вместо меня выполнять...
:-) )

>вправо...)  Я предвижу некоторые возражения по поводу извечного спора,
>что  полезнее  теория  или  практика, но просто игнорирую их. Картинки
>должны быть! Это мое мнение.
  Уважаю чужие мнения. Готов включить сюда ссылки на все полезные картинки, которые
ты нарисуешь. :-)

>Как   отличить   данные   от  алгоритмов?  Алгоритмы  -  это  правила,
>последовательность  действий.  Но любое действие направлено от чего-то
>на  что-то.  Исходным  материалом  и целью для алгоритмов часто служат
>данные.  Например, для алгоритма приготовления пирога данными являются
>ингредиенты,  инструменты,  температура  и т.д. Целью является вкусный
>пирог (данные для алгоритма пищеварения :)
  Так сказать, "тонкая" структура шага алгоритма (~ действие = сырье +
орудие + результат) описана у Щедровицкого (Щедровицкий Г.П. Избранные труды, 1995),
- правда, кажется, без упоминания самого слова "алгоритм".

>Я  настойчиво обращаю твое внимание на данные, так как по своему опыту
>убедился,  что  разрабатывая  программы,  надо  начинать  со структуры
>данных.  Затем  на  основе  данных  составляются  алгоритмы. С хорошей
>структурой данных программы получаются более простыми и понятными.
  "Исторически" я действительно начинал формализацию своей деятельности
с данных, - с крайне незначительным вкраплением каких-то предписаний. Но когда я
дошел до алгоритмов, оказалось, что с ними проще. Скажем, если у меня идут в дереве
решения задач один за другим шаги "прибавить 5 к 20", "прибавить 5
к 197", "прибавить 5 к 4", "прибавить 5 к 10083" и т.д.,
замена всего этого хозяйства на несколько записей (со значениями 20, 197, 4 и 10083)
в некотором поле некоторой базы данных и один шаг "прибавить 5 к этому полю
этой таблицы" происходит совершенно естественно и без каких бы то ни было умственных
усилий на предварительное проектирование баз данных.

4) Планы на будущее.
  В следующих номерах я собираюсь дать алгоритм определения жизненных целей и алгоритм
счастья :-).
  Кроме этого (спускаясь с небес на землю :-) ): мне тут какие-то редиски накидали
непрошеной рекламы на это мыло. Так что я озаботился и алгоритмом борьбы со спамом.
Если у кого есть какие наработки и/или ссылки, не преминьте отмылить.

Сергей Пушкарев, push@orc.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное