| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Turbo Site Admin
 
  Зарегистрирован: 19.02.2006 Сообщения: 248
 
  | 
		
			
				 Добавлено: Ср Апр 16, 2008 8:40 am    Заголовок сообщения: Ваши решения для задачи "Длинная цепь" | 
				     | 
			 
			
				
  | 
			 
			
				В этой теме можно обсудить ваш подход к решению этой задачи.
 
 
Сколько времени вам потребовалось для решения? Использовали ли вы брутфорс? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Stanislav Markevich
 
 
  Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
  | 
		
			
				 Добавлено: Ср Апр 16, 2008 1:24 pm    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				В итоге решил так: нашел цепь длинною 1056 и 6 элементов вставил руками  
 
Цепь из 1056 нашел поиском в глубину: в качестве первого элемента брал все числа, а следующим в цепи выбирал то число, которое дает меньше вариантов перебора. Поиск обрывал после определенного числа найденных цепей.
 
Такое решение заняло около часа. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Sergey Kreys
 
 
  Зарегистрирован: 15.04.2008 Сообщения: 2
 
  | 
		
			
				 Добавлено: Ср Апр 16, 2008 5:48 pm    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
 
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать    | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Stanislav Markevich
 
 
  Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
  | 
		
			
				 Добавлено: Ср Апр 16, 2008 6:18 pm    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Sergey Kreys писал(а): | 	 		  Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
 
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать    | 	  
 
пробовал и не нашел. просто тупой перебор??? | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		DAle
 
 
  Зарегистрирован: 21.02.2006 Сообщения: 24
 
  | 
		
			
				 Добавлено: Ср Апр 16, 2008 10:33 pm    Заголовок сообщения: Re: Ваши решения для задачи "Длинная цепь" | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Turbo писал(а): | 	 		  В этой теме можно обсудить ваш подход к решению этой задачи.
 
 
Сколько времени вам потребовалось для решения? Использовали ли вы брутфорс? | 	  
 
 
Сначала проанализировал степени вершин, нашлась одна вершина со степенью 1. С нее начинал поиск. Далее, на каждом шаге выбирал из соседних вершин вершины с минимальной степенью, делал их случайную перестановку и по очереди просматривал, пересчитывая степени при этом. В общем-то пришлось не сильно долго подбирать seed для генератора случайных чисел, чтобы нашелся ответ. Хотя идей еще была масса. На все ушло часа полтора. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Sergey Kreys
 
 
  Зарегистрирован: 15.04.2008 Сообщения: 2
 
  | 
		
			
				 Добавлено: Сб Апр 19, 2008 12:23 am    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Stanislav Markevich писал(а): | 	 		   	  | Sergey Kreys писал(а): | 	 		  Все просто: находим перебором гамильтонов путь в заданном графе, и выводим его. Стартовую вершину мы знаем - у нее степень равна 1.
 
При ~хорошей реализации все находится примерно за 5 минут. Вручную можно было ничего не делать    | 	  
 
пробовал и не нашел. просто тупой перебор??? | 	  
 
 
Не совсем. Под "хорошей" реализацией как раз понималась реализация перебора, построенная на основе хорошо известных предположений о порядке просмотра смежных с данной вершин на очередной итерации. К примеру, на очередном шаге "выгоднее" пытаться сначала пойти в вершину с наименьшей степенью(*); пройдя ребро, "удаляем" его из графа.
 
 
* - при равенстве степеней выбирается вершина, исходя из каких-нибудь других соображений (здесь, как выяснилось, большой простор для творческих идей) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		xaxa3217
 
 
  Зарегистрирован: 19.04.2008 Сообщения: 2
 
  | 
		
			
				 Добавлено: Сб Апр 19, 2008 11:22 am    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| если честно, то сколько по времени поиск цикла шел? у меня 950 вершин сразу набирал, а до 1061 думаю пришлось бы пару деньков сидеть, если не больше. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		zhengxi
 
 
  Зарегистрирован: 25.03.2008 Сообщения: 19
 
  | 
		
			
				 Добавлено: Сб Апр 19, 2008 9:30 pm    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | xaxa3217 писал(а): | 	 		  | если честно, то сколько по времени поиск цикла шел? у меня 950 вершин сразу набирал, а до 1061 думаю пришлось бы пару деньков сидеть, если не больше. | 	  
 
 
В первой сотне уже был результат с 1061
 
Или повезло с рандомайзером, или путей такой длины есть очень много | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		astapoff
 
 
  Зарегистрирован: 13.02.2007 Сообщения: 70 Откуда: Могилев, Беларусь
  | 
		
			
				 Добавлено: Сб Июн 14, 2008 3:16 pm    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				У меня способ как-то меньше мудренный...  
 
Для каждого числа я находил количество других чисел, в которые может быть преобразовано это число. вот. оказалось, что есть одно число, которое может быть преобразовано только в два других числа. вот с этого числа и начинал строить последовательность. после каждого нового добавления, я для всех чисел пересчитывал вот это количество чисел, в которые могут они быть преобразованы... ведь я же добавил число в последовательность, значит некоторые числа, которые раньше могли в него преобразоваться, уже не смогут этого сделать... так я нашел 1055 чисел... оставшиеся числа тоже составили из себя цепь, но эту цепь нужно было впихнуть в середину говотовой цепи из 1055 чисел...
 
 
Кто не понял меня?   | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |