Рубрика «переводы» - 14

Вольный перевод одного из ответов с mathoverflow.

Вопрос

Иногда в жизни бывают ситуации, которые описываются предложениями типа: «я знаю, что ты знаешь, что я знаю… что-то». Представьте себе, что вы испекли вишневый пирог и положили его остывать на подоконнике, а я потом втихаря его съел. Приведем список все более и более сложных предложений, которые все ближе и ближе подводят нас к полному знанию о происходящем. Например,

Я знаю, что ты знаешь, что я знаю, что ты знаешь…: «Я знаю, что вы испекли пирог и положили его остывать на подоконник; но вы не знаете, что я знаю». В таком случае, если я съем пирог, то об этом скорее всего никто и не узнает.

Я знаю, что ты знаешь, что я знаю, что ты знаешь…: «Я знаю, что вы испекли пирог и положили его остывать на подоконник; вы знаете, что я знаю; но я не знаю, что вы знаете, что я знаю». Если я съем пирог, то это может привести к довольно к щекотливой ситуации для меня.

Я знаю, что ты знаешь, что я знаю, что ты знаешь…: «Я знаю, что вы испекли пирог и положили его остывать на подоконник; вы знаете, что я знаю; я знаю, что вы знаете, что я знаю; но вы не знаете, что я знаю. что вы знаете, что я знаю». В таком случае после того как я съем пирог у меня останется надежда вывернуть ситуацию так, что вы не узнаете о моем преступлении.

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

Есть ли какие-либо ситуации в жизни, будь-то реальные или искусственные, где переход от Я знаю, что ты знаешь, что я знаю, что ты знаешь… к Я знаю, что ты знаешь, что я знаю, что ты знаешь… для больших значений Я знаю, что ты знаешь, что я знаю, что ты знаешь… может реально повлиять на стратегию действий? А что насчет Я знаю, что ты знаешь, что я знаю, что ты знаешь…? Как такие ситуации моделируются в математике?
Читать полностью »

От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я по прежнему буду крайне признательна за любые замечания в личку по улучшению качества перевода.

Опубликовано ранее:
Часть 1
Часть 2
Часть 3

Оптимальная сортировка

Поздравляю! Теперь вы знаете о том, как анализировать сложность алгоритмов, что такое асимптотическая оценка и нотация «большое-О». Вы также в курсе, как интуитивно выяснить является ли сложностью алгоритма O( 1 ), O( log( n ) ), O( n ), O( n2 ) и так далее. Вы знакомы с символами o, O, ω, Ω, Θ и понятием «наихудшего случая». Если вы добрались до этого места, то моя статья уже выполнила свою задачу.

Этот финальный раздел — опциональный. Он несколько сложнее, так что можете не стесняясь пропустить его, если хотите.От вас потребуется сфокусироваться и потратить некоторое время на решение упражнений. Однако, так же здесь будет продемонстрирован очень полезный и мощный способ анализа сложности алгоритмов, что, безусловно, стоит внимания.
Читать полностью »

От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я по прежнему буду крайне признательна за любые замечания в личку по улучшению качества перевода.

Опубликовано ранее:
Часть 1
Часть 2

Логарифмы

image
Если вы знаете, что такое логарифмы, то можете спокойно пропустить этот раздел. Глава предназначается тем, кто незнаком с данным понятием или пользуется им настолько редко, что уже забыл что там к чему. Логарифмы важны, поскольку они очень часто встречаются при анализе сложности. Логарифм — это операция, которая при применении её к числу делает его гораздо меньше (подобно взятию квадратного корня). Итак, первая вещь, которую вы должны запомнить: логарифм возвращает число, меньшее, чем оригинал. На рисунке справа зелёный график — линейная функция f(n) = n, красный — f(n) = sqrt(n), а наименее быстро возрастающий — f(n) = log(n). Далее: подобно тому, как взятие квадратного корня является операцией, обратной возведению в квадрат, логарифм — обратная операция возведению чего-либо в степень.
Читать полностью »

Выставить счет иностранному клиенту — непростая задача для молодого бизнеса. Ошибки, неточности и “неуверенный” английский — все это вызовет недоверие. Ошибаться нельзя.

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

Мы будем рады, если это поможет вашему бизнесу стать глобальнее.

Переведено в Alconost Translations.

Как правильно выставлять счета
Читать полностью »

От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я по прежнему буду крайне признательна за любые замечания в личку по улучшению качества перевода.

Опубликовано ранее:
Часть 1

Сложность

Из предыдущей части можно сделать вывод, что если мы сможем отбросить все эти декоративные константы, то говорить об асимптотике функции подсчёта инструкций программы будет очень просто. Фактически, любая программа, не содержащая циклы, имеет f( n ) = 1, потому что в этом случае требуется константное число инструкций (конечно, при отсутствии рекурсии — см. далее). Одиночный цикл от 1 до n, даёт асимптотику f( n ) = n, поскольку до и после цикла выполняет неизменное число команд, а постоянное же количество инструкций внутри цикла выполняется n раз.
Читать полностью »

Первая версия Kinect, сенсорного игрового контроллера от Microsoft, заняла второе место в рейтинге «10 самых инновационных технических продуктов 2011 года» по версии международного журнала Популярная Механика. К февралю 2013 года количество проданных устройств достигло 24 миллионов. При этом первые 8 миллионов были проданы в течение 60 дней с момента поступления устройства в продажу, что сделало Kinect «самым быстро продаваемым пользовательским устройством» в Книге Рекордов Гиннесса.

Но время проходит, и не за горами выход новой версии Kinect. Мне понравилась свежая статья на TechCrunch (в оригинале «How Microsoft built the cameras in the upcoming Kinect») об улучшениях нового Kinect. Текст написан человеком, который специально посетил кампус Microsoft в Mountain View для ознакомления с новым сенсором, а также поговорил с инженерами, которые его разработали.

По катом 6 аргументов, почему новая версия Kinect имеет все шансы повторить успех текущей версии...

Рисунок 1. Режимы просмотра нового Kinect.
Рисунок 1. Режимы просмотра нового Kinect.
Читать полностью »

От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы покажутся чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он будет полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я по прежнему буду крайне признательна за любые замечания в личку по улучшению качества перевода.

Введение

Многие нынешние программисты, пишущие классные и широко распространённые программы, имеют крайне смутное представление о теоретической информатике. Это не мешает им оставаться прекрасными творческими специалистами, и мы благодарны за то, что они создают.

Тем не менее, знание теории тоже имеет своё преимущества и может оказаться весьма полезным. В этой статье, предназначенной для программистов, которые являются хорошими практиками, но имеют слабое представление о теории, я представлю один из наиболее прагматичных программистских инструментов: нотацию «большое О» и анализ сложности алгоритмов. Как человек, который работал как в области академической науки, так и над созданием коммерческого ПО, я считаю эти инструменты по-настоящему полезными на практике. Надеюсь, что после прочтения этой статьи вы сможете применить их к собственному коду, чтобы сделать его ещё лучше. Также этот пост принесёт с собой понимание таких общих терминов, используемых теоретиками информатики, как «большое О», «асимптотическое поведение», «анализ наиболее неблагоприятного случая» и т.п.

Этот текст также ориентирован на учеников средней школы из Греции или любой другой страны, участвующих в Международной олимпиаде по информатике, соревнованиях по алгоритмам для учащихся и тому подобном. Как таковой, он не нуждается в знании каких-либо математических предпосылок и даст вам основу для дальнейшего исследования алгоритмов с твёрдым пониманием стоящей за ними теории. Как тот, кто в своё время много участвовал в различных состязаниях, я настоятельно рекомендую вам прочитать и понять весь вводный материал. Эти знания будут просто необходимы, когда вы продолжите изучать алгоритмы и различные передовые технологии.

Я надеюсь, что это текст будет полезен для тех программистов-практиков, у которых нет большого опыта в теоретической информатике (то, что самые вдохновлённые инженеры-программисты никогда не ходили в колледж, уже давно свершившийся факт). Но поскольку статья предназначена и для студентов тоже, то временами она будет звучать, как учебник. Более того, некоторые темы могут показаться вам чересчур простыми (например, вы могли сталкиваться с ними во время своего обучения). Так что, если вы чувствуете, что понимаете их — просто пропускайте эти моменты. Другие секции идут несколько глубже и являются более теоретическими, потому что студенты, участвующие в соревнованиях, должны разбираться в теории алгоритмов лучше, чем средний практик. Но знать эти вещи не менее полезно, а следить за ходом повествования не так уж сложно, так что они, скорее всего, заслуживают вашего внимания. Оригинальный текст был направлен учащимся старшей школы, никаких особых математических знаний он не требует, поэтому каждый, имеющий опыт программирования (например, знающий, что такое рекурсия) способен понять его без особых проблем.

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

Нотация «большого О» и анализ сложности алгоритмов — это те вещи, которые и программисты-практики, и студенты-новички часто считают трудными для понимания, боятся или вообще избегают, как бесполезные. Но они не так уж сложны и заумны, как может показаться на первый взгляд. Сложность алгоритма — это всего лишь способ формально измерить, насколько быстро программа или алгоритм работают, что является весьма прагматичной целью. Давайте начнём с небольшой мотивации по этой теме.
Читать полностью »

Мир движется к 64-битным вычислениям, несмотря на то, что в результате программы не всегда работают быстрее или производительнее по сравнению с 32-битными. Многие 32-битные программы, по разным причинам, могут работать быстрее 64-битных. Одним из таких примеров является 64-битный JIT-компилятор .NET-фреймворка. Он выполняет большую работу для того, чтобы ваша программа работала очень быстро, но сам он, увы, не настолько быстр, как хотелось бы. Это мы и собираемся исправить. Представляем x64 JIT-компилятор нового поколения, который способен компилировать 64-битный .NET код в 2 раза быстрее.
Читать полностью »

Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».

Содержание:

Авторы Boost.Asio сделали замечательную работу, давая нам возможность выбрать то, что больше удовлетворяет нашим приложениям, выбрав синхронный или асинхронный путь.
В предыдущей главе мы видели каркасы для всех типов приложений, таких как синхронный клиент, синхронный сервер, а так же их асинхронные варианты. Вы можете использовать каждый из них в качестве основы для вашего приложения. Если же возникнет необходимость вникать в подробности о каждом типе приложения, то читаем дальше.

Читать полностью »

Розыск и поимка владельца Silk Road. Отчет агента ФБР

Предисловие к переводу:
2-го октября на Хабре была опубликована статья с информацией о задержании владельца Silk Road – онлайн магазина в сети Tor, позволяющего анонимно покупать и продавать за bitcoin различные вещества, запрещенные к свободному обороту. В обсуждении статьи была также приведена ссылка на скан обвинительного акта (PDF, 3.3 MB) от 27.09.2013 г., на 39 листах, в котором живописно изложены злодеяния владельца и администратора Silk Road. Помимо юридической и технической стороны описания злодейств, акт содержит отчет агента ФБР о том, каким образом была раскрыта личность владельца Silk Road Росса Уильяма Ульбрихта (страницы 24–32, параграфы 33-45). Я решил, что было бы неплохо сделать его более доступным русскоязычному сообществу, и вот, перевод этой части обвинительного акта предлагается вашему вниманию.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js