Мой вопрос прост: что является наиболее эффективным способом нормализации 2d-двоичного массива в c, так что его столбец (или его строка) суммируется с 1. Ниже приведен простой пример, иллюстрирующий Что я хочу сделать. Это нормально, чтобы изменить массив, чтобы либо нормализовать его строку, либо ее столбец, если это имеет значение. Я также открыт для использования библиотеки внешних линейных алгебр. Просто не уверен, с чего начать. Спасибо за любую помощь заранее!normalize 2d c array column или row
void normalize(double** array, int nrow) {
int i;
double sum = 0;
for(i = 0; i < nrow; i++) {
sum += array[i][0];
}
for(i = 0; i < nrow; i++) {
array[i][0] /= sum;
}
}
Кстати, это часть скрытого алгоритма динамического программирования модели Маркова, и это называется много раз. Поэтому я хочу сделать эту часть максимально эффективной.
наиболее эффективным по какой мере? Что не так с приведенным примером? Если я не смогу доказать, что мой ответ каким-то образом является самым эффективным возможным из когда-либо (вы даже не даете платформу и архитектуру, поэтому я не знаю, как кто-то может знать, что для вас наиболее эффективно), вы не хотите Это? – xaxxon
Ну, мне просто интересно, есть ли лучший способ сделать это, как измеряется временем, прошедшим. Код будет работать на linux и intel xeon. – qkhhly
хранить хэш любой возможной комбинации и искать нормализованное значение. Разумеется, для этого требуется почти бесконечное количество памяти. Я имею в виду, что, возможно, есть некоторые инструкции SIMD, которые вы можете использовать, но стоит ли так далеко (также, для чего требуется знание WHICH xeon platform)? Какова ваша цель? Почему, по-вашему, вам нужно что-то быстрее? Профилировали ли вы свой код? – xaxxon