Содержание
- 2. Пример к Лекции 5 Задача о большинстве массива 14.04.2015 О схемах программ
- 3. Пример: массив с большинством Определение: массив x1, x2, …, xn содержит большинство, если более половины его
- 4. Пояснения Элемент a в массиве Х [1 .. п] является элементом большинства ттогда, когда a появляется
- 5. Решения Простой алгоритм: для каждого элемента подсчитывать число вхождений, пока не встретится элемент, образующий большинство. Сложность
- 6. Вариант рандомизированного алгоритма Случайно выбираем i (равновероятно), а затем проверяем, удовлетворяет ли xi условию большинства. do
- 7. Сложность рандомизированного алгоритма Фиксируем размер входа n. Множество всех возможных сценариев – множество кортежей (i1, i2,
- 8. Рекуррентное уравнение Средние затраты t=t(n) есть t = P*n + (1-P)*(t + n), где P -
- 9. «Дерандомизация» Идея: За основу берется рандомизированный алгоритм и случайный выбор заменяется на нерандомизированный (детерминированный) Выбор кандидата
- 10. Наблюдения (наводящие соображения) Если два различных элемента удаляются из массива X, то большинство старого массива остается
- 11. Algorithm: Majority Вход: x[1..n] Выход: Элемент большинства, если большинство существует, иначе ответ «нет». ------------------------------------------------------------------- c =
- 12. Функция Candidate(m) { j = m; c =x[m]; count = 1; While ( (j 0)) {
- 13. Не рекурсивная функция Candid1 { count = 1; c = x[1]; for (j = 2; j
- 14. Не рекурсивная функция Candid2 { count = 0; // c = x[1]; for (j = 1;
- 15. int Majority(int X[], int n) {// C++, т.е. X[0..n-1] int Candidate; int i = 0; int
- 16. Примеры x[1..13] = 3131313131313 Count > 0, и имеется большинство x[13]=3 x[1..9] = 123456777 Count >
- 17. Продолжение x[1..9] = 555551234 55555 {count=5} 555551 {count=4} 5555512 {count=3} 55555123 {count=2} 555551234 {count=1} !!! x[1..9]
- 19. Скачать презентацию