Hallmarks of french silver (from 1797 to present days)

Особенности производства

  1. Зерно. Кукурузу и пшеницу поставляют из расположенных по соседству хозяйств, где земля богата известняком, и потому зерно имеет мягкий, деликатный вкус. Ячменный солод готовят без катализаторов и ферментов — процесс брожения натуральный.
  2. Вальцовая мельница. Этот старинный метод позволяет обрабатывать зерно, сохраняя оптимальный уровень влажности, что делает вкус солода мягким.
  3. Дрожжи. На винокурне используются дрожжи только собственного производства, тогда как другие заводы их просто покупают.
  4. Дистилляция. На производстве используют открытые печи для лучшей ароматизации зерна и характерную для шотландского виски двойную перегонку — обычные бурбоны дистиллируют единожды. Поэтому Maker’s Mark менее маслянист, чем американский виски, аромат легче и приятней.
  5. Брожение и созревание. Выдержка напитка происходит традиционно в дубовых бочках, а вот бродильные чаны сделаны из кипариса. В то время как на других винокурнях используются емкости из нержавеющей стали.

Интересные факты

Несмотря на стремление дистанцироваться от бурбонов, компания Maker’s Mark в рекламе своего продукта часто использует популярность самых известных американских виски. Притом эта реклама обычно носит ироничный характер. Так в одной из них рекламщики нашли человека по имени Джек Дэниелс, сфотографировали его с бутылкой своего напитка и подписали выполненное в старинном стиле чёрно-белое фото: «Jack Daniels пьёт Maker’s Mark».

В другой раз, когда компания Jack Daniels выпустила под своей маркой пиво со вкусом виски, представители Maker’s Mark в качестве рекламы использовали рисунок: алюминиевая пивная банка с характерными потёками красного воска и надписью: «Пиво Maker’s Mark. Такого никогда не будет». (Maker’s Mark beer. Never happens).

Тесты

Реализовано два блока тестов: тесты модуля matrix и тесты корректной работы программы.

Запуск тестов модуля:

Запуск тестов программы:

На вход тестов программы подаются файлы из директории .
Тестовые файлы оттуда проверяют базовые случаи для графов с количеством вершин не более 7, так как для более крупных графов, начиная уже с 10 вершин, нельзя точно выявить, на какие кластеры разобьется граф и проверку тестов не получится автоматизировать.

Подробное описание каждого теста:

  1. — единичная матрица, что подразумевает под собой полный граф. Очевидно, что в таком случае кластер будет один и состоять из всех вершин.
  2. — граф, в котором интуитивно понятно, что образются два кластера: соединены между собой 1, 2, 3 вершины и отдельно 4, 5, 6, 7, а между ними соединены 3 и 4.
  3. — диагональная матрица, что означает, что это граф, в котором вершины между собой не связаны, но у всех есть петли. Соотвественно кластеров должно быть столько же, сколько и вершин.
  4. — граф, в котором связаны только первая и вторая вершины и отсутствуют петли. Очевидно, что вершины 1, 2 в одном кластере, остальные — разделены по своим собственным.
  5. — граф, практически индентичный . Ожидается, что в итоге получится 2 кластера (как и в тесте 2, но выставлены случайные петли у вершин).

Тесты модуля проверяют правильность выполнения содержащихся в нем функций на простых примерах.

Особенности бурбона Maker’s Mark

  1. Ограниченный тираж. Ежегодная партия Maker’s Mark невелика — до 20 бочек, большинство операций делают вручную, строго контролируя качество на всех этапах производства.
  2. «Плавающие» сроки выдержки. Зрелость виски определяют не по дате, а по вкусу: мастер пробует напиток и решает — можно его уже разливать по бутылкам, или продлить пребывание в дубовых бочках. Сроки могут колебаться от 5,5 лет до 8.
  3. Каждый выпуск уникален. Формально Maker’s Mark — это один-единственный сорт виски, но партия прошлого года может отличаться от той, что выпущена 5 лет тому. На вкус, аромат и цвет напитка влияет вода, зерно, качество и период созревания которого зависят от погодных условий, возраст и свойства деревянной тары, температура и влажность в период созревания. От всех этих факторов зависит почерк каждой партии.
  4. Начиная с Билла Сэмюэлса, производители Maker’s Mark отказываются даже сравнивать своё детище с другими бурбонами, утверждая, что по вкусу и характеру напиток так же далёк от американского виски, как коньяк.


Три злака: кукуруза, пшеница и ячмень

Логика программы

Точка входа программы — функция файла .
Она считывает с входного потока имя входного и выходного файлов и передает их в функцию , попутно обрабатывая исключения ввода имен файлов и исключения работы алгоритма.

Модуль состоит из функций:

  • — принимает на вход файл формата *.csv и преобразует его в питоновский лист листов, по сути в матрицу.
  • — функция-менеджер алгоритма: считывает матрицу из файла (функция ), запускает алгоритм кластеризации на полученной матрице (функция ) и записывает результат в файл (функция ). Также выводит информацию о ходе программы.

Далее программа переходит в модуль . В ней реализованы алгоритмы, специфичные для кластеризации Маркова. Это подразумевает, что в этом же файле реализован и сам алгоритм кластеризации. Этот модуль также активно использует операции над матрицами, реализованные в модуле Соотвественно состоит из функций:

  • — реализует оператор распространения, необходимый для вычисления алгоритма (см. )
  • — реализует оператор накачивания (см. )
  • — главная функция, реализующая алгоритм. По сути алгоритм представляет собой следующие шаги:
  1. Добавить в matrix петли с весом .
  2. Нормализовать matrix: привести к стохастическому виду.
  3. Накачивание с
  4. Распространение.
  5. Посмотреть изменения текующей матрицы с предыдущей с заданной точностью , если 0 или число итераций превысило — завершить алгоритм, иначе — перейти к шагу 3.
  6. Получить кластеры из получившейся устойчивой матрицы.

Для работы с получением и выводом кластеров реализован модуль .

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

В функции основного файла алгоритма активно используются операции над матрицами, представленными в виде листа листов, реализованные в модуле .

Среди функций этого модуля наибольший интерес представляет функция перемножения матриц. Так как стандартное перемножение на практике с графом с 300 вершинами за одну итерацию дает время выполнения в 7 секунд, было решено оптимизировать алгоритмом Штрассена . (теперь занимает 5 секунд) На графах с менее чем 64 вершинами используется стандартное умножение .

История создания

Хотя история создателей бурбона уходит в далекое XVIII столетие, первая бутылка знаменитого виски Maker’s Mark увидела свет относительно недавно – в 1958 году. Лишь через сто лет Билл Сэмюэлс-старший решился на создание оригинальной рецептуры уникального бурбона. На поиски идеального сочетания ячменя, кукурузы и озимой пшеницы ушло 8 лет.

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

Создание необычного дизайна Maker’s Mark, как и его оригинального названия, является личным достижением жены Сэмюэлса. Это она предложила воспользоваться бутылкой коньячной формы и запечатать красным воском горлышко. Выпуклый штамп на бутылке является своеобразной визитной карточкой производителей четвертого поколения Сэмюэлсов.

Изготовление этикетки на допотопном станке вручную и выполнение на ней надписей на старинной печатной машинке тоже работает на создание особенного имиджа этого напитка. Выдерживают знаменитый бурбон от 5 до 7 лет во вновь изготовленных бочках из белого американского дуба. В итоге получается тот самый известный на весь мир виски премиум-класса Мейкерс Марк, внешний вид которого достоин своего уникального содержания.

Конечно, многие из настоящих ценителей элитного алкоголя могут привести достойные примеры своих любимых марок лучшего бурбона, таких как —Jim Beam—, Four Roses, —Wild Turkey—, Heaven Hill. Но среди них мало кто не отнесется с уважением к Maker’s Mark, заслуженно признанному национальным достоянием США. Такими высокими званиями американцы попусту не разбрасываются. И он не зря продолжает быть самым узнаваемым брендом на рынке алкоголя супер-класса. Поэтому не стоит исключать возможность приобщиться к высокой культуре потребления невероятного напитка, богатого вкусовыми оттенками меда, ванили, фруктовой экзотики и древесных нот.

Как правильно выбрать напиток

  • Подлинность бурбона Мейкерс Марк прежде всего можно определить по солидному дизайну бутылки высококлассного виски, так как ни его тару, ни этикетку невозможно воспроизвести без дорогого оборудования.
  • Надежной гарантией будет обязательное наличие акцизной марки и приобретение его в торговой сети алкоголя премиум-класса.
  • Оригинальный напиток имеет насыщенный янтарный цвет и всегда остается прозрачным.
  • Его характерную маслянистую консистенцию проверяют встряхиванием бутылки, а после образования крупных пузырей напиток стекает медленными каплями по стеклу.
  • Этикетка должна предоставлять подробную информацию о натуральности его ингредиентов без добавления каких-либо искусственных ароматизаторов и добавок.
  • При вдыхании аромата —настоящего виски— никоим образом не ощущается резкий спиртовой запах, а лишь чувствуется его сложный букет из фруктов, меда и ванили с длительным древесным послевкусием.

Оценка сложности

Вычислительная сложность алгоритма

Условимся за считать количество вершин графа.

Сперва необходимо граф прочитать из файла и записать в лист листов. Так как граф хранится в виде матрицы смежности, то сложность выйдет .

Затем работает сам алгоритм. В моем случае, в конфигурации выставлено, что максимальное количество итераций равно 100. Автор алгоритма утверждает, что количество подобных итераций будет равно , где — максимальная степень вершины графа.

В алгоритме используются операции накачивания и расширения.

Накачивание — это нормализация матрицы (то есть по сути просто пройтись по матрице) и возвести в степень по правилу Адамара (тоже один проход по матрице). Итого .

Расширение — это перемножение матрицы самой на себя. Обычное перемножение матрицы самой на себя по сложности .

Однако в программе используется алгоритм Штрассена, согласно которому умножение матриц проводится рекурсивно для матриц размера , над которыми проводится 7 операций перемножения из введенных дополнительных матриц:

.

Из которых любую матрицу можно разбить на четыре соотношением:

Получается реккурентное соотношение вида: , из которого сложность будет равна .

Остаются функции , и , в которых опять же проходишься по матрице за .

Вывод кластеров в файл занимает и плюс количество кластеров.

Итого вычислительная сложность:

Сложность по памяти

Хранение матрицы смежности, как в файле csv, так и в листе листов .

Функции работы с матрицами, использующие дополнительную память, выделяют не больше чем дополнительной памяти (так как просто создают новую матрицу nxn).

Функция смотрит диагональные элементы устойчивой матрицы и если он не равен 0, записывает эту колонку в свой лист листов. Таким образом, по памяти она тратит также .

Итого .

Ссылка на основную публикацию