LINUX.ORG.RU

Сообщения phrm

 

Комбинаторная переборка задачи - как лучше реализовать?

Нужно перебрать все возможные решения многомерной задачи, сохраняя лучшие N вариантов решения. Лучшие - согласно определенной функции оценки. Предпологается, что если растояние между двумя телами в данном многомерном пространсве достаточно близко, то только одно из них будет сохранено. Моя стратегия:
<PSEUDOCODE>
variant=problem.nextSolution();
while (variant.isValid()){
bool insert=true;
for (list<Variant>::iterator i=bestList.begin();i!=bestList.end();++list){
if (distance(variant, *i) < threshold){
insert=false;
break;
}
if (insert){
variant.calculateScoringFunction();//(много времени)
//пройтись по листу
//и вставить вариант в нужном месте
//если вставлено как минимум N
//вариантов, убрать последний
}
variant=problem.nextSolution();
}
</PSEUDOCODE>

Есть ли стратегии лучше?
Стоит ли, для хранения лучших результатов, использовать std::map (или какой-то другой sorted conainer) вместо std::list?

Пару пояснений и оговорок:
0. язык - С++
1. вычесление "функции оценки" забирает раза в 4-5 больше времени, чем вычесление растояния между телами в пространсве поэтому вычеслять её до того, как уверены, что вариант интересен - не имеет смысла.
2. очень и очень не хочется иметь дело с динамичеким выделением (и освобождением) памяти
3. Может вопрос и OT, так как к линуксу прямого отнашения не имеет (разве, что пишется на оном), но опыт показывает, что на этом форуме довольно высокое отношение сигнала к шуму ("signal to noise ratio") благодоря тому, что его посещают специалисты во многих облостях.

phrm
()

минимальные настройки секурити

(только больно не бейте - не специалист я в этом деле)

Есть компьютер с Мандривой на борту, который подключен в сеть через кабельный модем(dynamic IP). Мне надо иметь возможность переодически подключатся к компьютеру через ssh и, может, через vnc.

Достаточно ли закрыть стандартными способами Мандривы (mcc) всё, кроме ssh (и ping), или же мне надо заходить в дебри компьютерной безопасности?

Сразу оговорюсь: ядерных секретов на компьютере нет, просто хочу минимальной защиты от всяких слуйчайных вандалистов и нехороших людей.

phrm
()

запутался с поинтерами (в который раз)

Ниже следующий отрывок кода илюстрирует такую вот проблему:
в функции main существуют массивы (1, 2-х и 3-мерные). Дан класс, все функции, которого обязаны иметь доступ к этим массивам. Так как массивов много, хочу держать в классе статические ссылке (поинтеры или чего есче). Пожалуйста, не обясняйте мне что это совершенно долбанный дезайн. Я это знаю, но ничего поделать не могу, т.к. программа мне досталась по наследству и переделывать дезайн - не могу.
Помогите скомпилировать
#include <iostream>
#define X 3
#define Y 10
using namespace std;
class A {
public:
static void setup (float (a[X][Y]), int b[]);
static void print();
static void add();

static float arr[X][Y];
static int *brr;
};

void A::setup(float a[X][Y], int b[]) {
brr=b;
arr=a;
}

void A::print() {
for (int i=0;i<X;++i) {
for(int j=0;j<Y;++j) {
cout<<arr[i][j]<<' ';
}
cout<<endl;
}
}

void A::add
() {
for (int i=0;i<X;++i) {
for(int j=0;j<Y;++j) {
arr[i][j]+=1000.1111;
}

}
}


int main(int argc, char *argv[]) {
float arr[X][Y];
int brr[Y];

return 0;
}

hello.cpp: In static member function &#8216;static void A::setup(float (*)[10], int*)&#8217;:
hello.cpp:17: error: incompatible types in assignment of &#8216;float (*)[10]&#8217; to &#8216;float [3][10]&#8217;
gmake: *** [zhello.lo] Error 1

phrm
()

как минимум

Знатоки и специалисты,
подскажите пожалуйста более красивый и элегантный вариант решения такой вот ситуации:

переменная a вычесляется по какой-то формуле, но она должна быть не меньше переменной b. Мой вариант:

int a;
a=formula(arg1, arg2, argN);
if(a<b){
a=b;
}

phrm
()

perl QT - кто пробовал?

кто пробовал perl QT? - какие впечатления?

http://perlqt.sourceforge.net/

phrm
()

Нужно по быстрому свалять GUI на перле

помогите советом и личным опытом, пожалуйста.

Нужно по быстрому сделать гуй: дать возможность юзеру тыкнуть раз-другой в чек-бокс, выбрать файл, нажать на ОК и т.п. Никаких картинок/графиков.
Что очень важно:
- быстрота написания и изучения
- работа с русским, арабским и ивритом
- у меня нету времени учить новые языки програмирования, по этому - перл (знаю С++, но думаю тут он не нужен)

Что совсем не важно
- эстетика
- portability - будет работать на одном компе
- maintenance - написал один раз и забыл

phrm
()

Valgrind, static и большие стэки



Разбираю, программу, у которой в main-е ну просто до хера таких вот деклараций:

float positions [MAX_MAPS][MAX_LOCATIONS][MAX_POINTS][SPACE];
(это при том, что MAX_LOCATIONS==512, MAX_POINTS==1024, и т.д )

В общем, стэк получяется нехилий. Valgrind почти везде плюётся: "invalid write of size X". На сети [1] прочел, что делая выше указанные таблицы static, можно избавится от таких сообщений.
Может ли кто-нибудь пояснить как и почему этот ход работает, и какие побочныэ эффекты могут быть у такого хода?

Спасибо

phrm
()

precedence в С++


По идее, результат должен быть 5, а не -999
В чем моя ошибка? (особое внимание на строчку 17):

1 #include <vector>
2 #include <iostream>
3 using namespace std;
4 int main (int argc, char* argv[]) {
5 vector <vector <double> > table;
6 for(int i=0;i<5;++i) {
7 vector<double> tmp;
8 for(int j=0;j<5;++j) {
9 tmp.push_back(0);
10 }
11 table.push_back(tmp);
12 }
13 int max=-999;
14 int s; bool b1, b2;
15 for(vector< vector < double> >::const_iterator iter=table.begin(); iter!=table.end(); ++iter) {
16 s= iter->size(); b1= ( (iter->size()) > max); b2= s>max;
17 if ((iter->size()) > max)
18 max=iter->size();
19 }
20 cout<<"max: "<<max<<endl;
21 cout<<"s: "<<s<<", b1: "<<(int)b1<<", b2 "<<(int)b2<<endl;
22
23 cout<<"END"<<endl;
24 return 0;
25 }

OUTPUT
max: -999
s: 5, b1: 0, b2 1
END

phrm
()

Makefile - ну что-за гадость?!



Вот отрывок из Makefile-а (напсанного в ручную кем-то):
435
436 gencau.o : gencau.cc ranlib.h
437 $(CC) $(CFLAGS) -c gencau.cc
438
439
440 genpool.o : genepool.cc genepool.h
441 $(CC) $(CFLAGS)-c genepool.cc
442
443 getInitialState.o : getInitialState.cc getInitialState.h constants.h qmultiply.h stateLibrary.h initautodock.h trilinterp.h eintcal.h cnv_state_to_coords.h prInitialState.h timesys.h autocomm.h
444 $(CC) $(CFLAGS) -c getInitialState.cc
445
446 get_atom_type.o : get_atom_type.cc get_atom_type.h constants.h
447 $(CC) $(CFLAGS) -c get_atom_type.cc
448
Вот отрывок из процесса компилирования:
g++ -g3 -O0 -c gencau.cc
g++ -c -o genepool.o genepool.cc
g++ -g3 -O0 -c getrms.cc
g++ -g3 -O0 -c get_atom_type.cc


заметили разницу в том, как создаётся файл genepool.o и как создаются остальные файлы?

Я уже не знаю что делать.

phrm
()

Температуры в IBM ThinkPad


У меня на моем laptop-е (IBM ThinkPad R50e) вот такие температуры:
BAT1 34.0
BAT2 32.0
CPU 51.0
GPU 37.0
HDD 42.0
PCI 45.0
THM0 56.0


не много ли это?

PS: че за THM0 такой - где живет?
PPS: очень подозрительно, что все градусы - "круглые", т.е с нулем после запятой

phrm
()

как лучше устроить сеть?

помогите пожалуйста советом и/или ссылкой.

У меня в оффисе стоят около 10 компьютеров. Все - линукс и все подключену к LAN-у. Что-бы ускорить коммуникацию между нашими компьютерами (будем их объеденять в кластер), было решено снабдить каждый комп дополнительной сетевой платой (1Г) и купить switch соотвестсвенно 1Г). Надо, что-бы связь с миром (вход и выход) происxодил через нынешний LAN, а связь между компьютерами в оффисе - через switch.

Как это сделать?

Спасибо

phrm
()

русские шашки для линукса

Нужны русские шашки для линукса. Подчеркиваю: русские - такие где можно бить назад, где дамка ходит на столько клеток, на сколько хочет и т.д. (а то во всех программах, которые я видел правила - американские).

Он-лаин игры не предлагать, т.к нужна возмозность играться без подключения к интернету.

Спасибо

phrm
()

Как указать дебагеру путь к исxодникам библиотеки?

Имеется библиотека, скомпилированная с debug info. Каким образом дебагер знает где именно искать исxодники?

(Вопрос относится к дебагеру kdevelop-а и к gdb, программы написаны на С++)

phrm
()

Опять матрицы вращения


Помогите, пожалуйста, разобраться раз и на всегда:
Дано тело в пространстве, которое надо повернуть вокруг своего центра и подвинуть(dx, dy, dz). В используеммой библиотеке есть функция которое делает rigid body transformation (трансформирование твердого тела). Сама трансформация выражена матрицой 4 на 4. Мой план: вычисляем матрицы (4x4)
- m1 передвижения тела в точку [0;0;0]
- m_inv обратно из [0;0;0] в центр тела
- m2 вращение
- m3 передвижение (dx, dy, dz)
(почему именно так? просто для каждой такой операции уже есть функции).

Теперь двигаем тело в вершину координат, крутим, двигаем обратно, и двигаем есче чуть-чуть:
mTotal=m1*m2*m_inv*m3 ;
(оператор * - написан и соответсвует векторному перемножению матриц).
Прав ли я (скорее всего, что - нет, т.к. получаю какую-то херню), и если нет, то в чем заблуждаюсь?

phrm
()

ulimit и файлы больше 2-х ГБ

Я пытался скачать iso image ДВД-диска. Как только закачалось 2 ГБ, wget выдал "file size limit exceeded" и умер. Проверил ulimit:
[tmp]$ ulimit
unlimited

Начал искать в гугле и нашел вот это: http://tinyurl.com/czqbv . Там говорят что это глюки ядра 2.4.хер-знает: надо логинится рутом (su или sudo не помогают). У меня:
[tmp]$ cat /proc/version
Linux version 2.6.8.1-12mdksmp (quintela@n5.mandrakesoft.com) (gcc version 3.4.1 (Mandrakelinux (Alpha 3.4.1-3mdk)) #1 SMP Fri Oct 1 11:24:45 CEST 2004


что-же делать?
Спасибо

phrm
()

Как автоматом подцепить wireless?

Купил ноут с предустановленной windows xp. Как только включил комп, сразу всплыло сообщение типа "тут рядом есть хотспот, подключится?". Хочу такое в линуксе.

(установил вместо windows).

phrm
()

Чем редактировать pdf файлы?

Чем можно редактировать pdf файлы? Мне нужна совсем минимальная функциональность: подчеркнуть пару строк цветным маркером, и дописать свои замечания.

phrm
()

Kaffeine: есть звук, нету видео


Пытаюсь посмотреть клип в формате wma (скачал http://yee.is-useless.org/Live%208%20-%20Pink%20Floyd%20(webcast).wmv).

Звук слышу, а видео - нету.

Мандрива 2005

phrm
()

какой процес был убит

здрасте, это опять я. периодически система зависает из-за того, что чей-то процесс съедает всю память. Подозрение падает на одну девушку (названную мной в прошлом посте бл--ю). Можно ли как-то доказать (при помощи логов кернела или как-то есче) какой именно процес (uid, command и т.д) и по какой причине был убит кернелом?

Спасибо

PS за кривой русский - извините

phrm
()

как ограничить ресурсоёмкость оного юзера?

Работает на нашей машине одна бл^H^H девушка.
Очень часто случается, что её процессы жрут весь RAM, и пока кернел не убъет чего-то (а это может занять и час и два) - компьютер абсолютно ни на что не реагирует.
Как можно ограничить кол-во памяти, которую могут жрать процессы этой коз^H^H девушки?

phrm
()

RSS подписка на новые темы