| zeus | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация:    0           	 | 
       
			
			 имеется связный орграф с 5 вершинами. необходимо найти наибольшее число дуг, удаление которых оставляет граф связным. помогите с алгоритмом, или если есть где нибудь он дайте ссылку. заранее спасибо 
			
			
					
		 | 
	
![]() ![]()  | 
	
| hardcase | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация:    8           	 | 
       
			
			 Думаю вам нужен алгоритм нахождения минимального остовного дерева. 
			
			-------------------- ИзВ ин ИтЕ   зА   нЕ рОв НЫй   П оч ЕРк 
					
		 | 
	
| Michael_Rybak | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация:    32           	 | 
       
			
			 Полным перебором пробуешь выбрасывать все возможные наборы дуг, и каждый раз проверяешь, связен ли полученный граф. 
			
			
					
		 | 
	
| zeus | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация:    0           	 | 
       |
| Michael_Rybak | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация:    32           	 | 
       
			
			 Связность графа проверяешь так: алгоритмом Флойда заполняешь матрицу достижимости, а потом проверяешь, что все пары вершин - связаны. 
			
			
					
		 | 
	
| zeus | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация:    0           	 | 
       
			
			 Полным перебором пробуешь выбрасывать все возможные наборы дуг, и каждый раз проверяешь, связен ли полученный граф. Приветик. я уже 2 недели бьюсь с этим вопросом. я не тупой, но графы я не понимаю. Обьясни на пальцах что это за алгоритм полного перебора, как это все иснользовать. Помоги, как можно это зделать все что ты сказал?  | 
	
| Michael_Rybak | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
| 
        	
        		 Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация:    32           	 | 
       
			
			 Смотри. Тебе надо перебрать все возможные варианты, когда какие-то дуги есть, а каких-то нет (удалены).  
			
			
					
		Пусть у нас 5 дуг. Получается у нас 2^5 = 32 варианта: от пустого графа, когда все дуги удалены, до исходного, в котором ничего не удалили. Эти варианты можно перебрать так. Вариант пусть задается набором из пяти чисел, каждое - 0 или 1. 0 = дуга удалена, 1 = дуга на месте. Нужно перебрать все наборы: 00000, 00001, 00010, 00011, 00100, ..., 11110, 11111. Эти наборы можно перебрать один за другим, просто переходя к каждому следующему, добавляя единичку в двоичной системе: var a: array [1..100] of integer; В результате процедура Process() по очереди вызовется для каждого набора. В ней ты проверяешь, связен ли граф с такими удаленными дугами, и если да, считаешь количество удаленных ребер, запоминая интересующий тебя максимум.  | 
	
| zeus | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация:    0           	 | 
       
			
			 Смотри. Тебе надо перебрать все возможные варианты, когда какие-то дуги есть, а каких-то нет (удалены). Пусть у нас 5 дуг. Получается у нас 2^5 = 32 варианта: от пустого графа, когда все дуги удалены, до исходного, в котором ничего не удалили. Эти варианты можно перебрать так. Вариант пусть задается набором из пяти чисел, каждое - 0 или 1. 0 = дуга удалена, 1 = дуга на месте. Нужно перебрать все наборы: 00000, 00001, 00010, 00011, 00100, ..., 11110, 11111. Эти наборы можно перебрать один за другим, просто переходя к каждому следующему, добавляя единичку в двоичной системе: var a: array [1..100] of integer; В результате процедура Process() по очереди вызовется для каждого набора. В ней ты проверяешь, связен ли граф с такими удаленными дугами, и если да, считаешь количество удаленных ребер, запоминая интересующий тебя максимум. тоесть, мы процедуру Process () вызваем для каждой вершины? и прости за непонятливость, для кокого набора, набора пар вершин или набора ребер исходящих из вершины?  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 8:32 |