Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 01:07   #1
VAAKAraceGUM
Новичок
Джуниор
 
Регистрация: 13.02.2012
Сообщений: 2
По умолчанию Алгоритм Брона-Кербоша или Java перевести на Си...

В общем Алгоритм Брона-Кербоша представляет из себя поиск наибольшего независимого множества вершин в графе... Мне надо написать эту программку на С++. Но у меня имеется алгоритм на Java, если кто умеет можете помочь перевести его на C++, но желательно без всяких классов и тд... Ну или может быть у кого-нибудь просто есть этот алгоритм.

Алгоритм на Java:

PHP код:
import java.util.*;

public class 
BronKerbosh {

  static 
void findMaximumIndependentSet(List<Integercur, List<Integerresultboolean[][] graphint[] oldSet,
      
int neint ce) {
    
int nod 0;
    
int minnod ce;
    
int fixp = -1;
    
int s = -1;

    for (
int i 0ce && minnod != 0i++) {
      
int p oldSet[i];
      
int cnt 0;
      
int pos = -1;

      for (
int j necej++)
        if (
graph[p][oldSet[j]]) {
          if (++
cnt == minnod)
            break;
          
pos j;
        }

      if (
minnod cnt) {
        
minnod cnt;
        
fixp p;
        if (
ne) {
          
pos;
        } else {
          
i;
          
nod 1;
        }
      }
    }

    
int[] newSet = new int[ce];

    for (
int k minnod nod>= 1k--) {
      
int sel oldSet[s];
      
oldSet[s] = oldSet[ne];
      
oldSet[ne] = sel;

      
int newne 0;
      for (
int i 0nei++)
        if (!
graph[sel][oldSet[i]])
          
newSet[newne++] = oldSet[i];

      
int newce newne;
      for (
int i ne 1cei++)
        if (!
graph[sel][oldSet[i]])
          
newSet[newce++] = oldSet[i];

      
cur.add(sel);
      if (
newce == 0) {
        if (
result.size() < cur.size()) {
          
result.clear();
          
result.addAll(cur);
        }
      } else if (
newne newce) {
        if (
cur.size() + newce newne result.size())
          
findMaximumIndependentSet(curresultgraphnewSetnewnenewce);
      }

      
cur.remove(cur.size() - 1);
      if (
1)
        for (
= ++ne; !graph[fixp][oldSet[s]]; s++)
          ;
    }
  }

  public static List<
IntegermaximumIndependentSet(boolean[][] graph) {
    
int n graph.length;
    
int[] all = new int[n];
    for (
int i 0ni++)
      
all[i] = i;
    List<
Integerres = new ArrayList<Integer>();
    
findMaximumIndependentSet(new ArrayList<Integer>(), resgraphall0n);
    return 
res;
  }

  
// Usage example
  
public static void main(String[] args) {
    
int n 4;
    
boolean[][] = new boolean[n][n];

    
// create a simple cycle
    
g[0][1] = g[1][0] = true;
    
g[1][2] = g[2][1] = true;
    
g[2][3] = g[3][2] = true;
    
g[3][0] = g[0][3] = true;

    List<
Integerres maximumIndependentSet(g);

    List<
IntegerexpectedResult = new ArrayList<Integer>();
    
Collections.addAll(expectedResult02);
    
System.out.println(expectedResult.equals(res));
  }


Последний раз редактировалось VAAKAraceGUM; 05.05.2012 в 01:11.
VAAKAraceGUM вне форума Ответить с цитированием
Старый 05.05.2012, 01:09   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://www.programmersforum.ru/showthread.php?t=34061
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести с С++ в java luffi Помощь студентам 0 29.03.2012 12:24
Код Java перевести в Delphi. Rin Общие вопросы по Java, Java SE, Kotlin 2 20.03.2012 01:32
перевести код с delphi на java. Neymexa Фриланс 1 21.11.2008 16:07
Как алгоритм перевести в код VBA valerij Microsoft Office Excel 18 29.05.2008 01:32