データ構造とアルゴリズム・アップデート情報

データ構造とアルゴリズム, www.kameda-lab.org 2003/06/10

このページでは、授業で説明した内容に誤り・不適切な情報が あった場合についてアップデート情報をお知らせします。


2003/06/10

Knapsack Problemを解くサブプログラムにおいて、 変数iの範囲を間違って書いてました。
for i = 2 to N - 1
  for t = 1 to N*Vmax
    ...
for i = 1 to N - 1
  for t = 1 to N*Vmax
    ...

2003/05/20

ダイクストラ(dijkstra)のアルゴリズムにおいて、 find_shortest_path()関数内部の一部を 授業中に正しく板書したかどうか気になったので、一応載せておきます。 cost[]を書き換える部分です。
誤(授業?)
for (  ; numt > 0; numt--) {
  for (min = cost[m = v[0]], i = 1; i < numt; i++) {
    if (cost[v[i]] < min)
      min = cost[v[i]];
      ...
for (  ; numt > 0; numt--) {
  for (min = cost[m = v[0]], i = 1; i < numt; i++) {
    if (cost[v[i]] < min)
      min = cost[m = v[i]];
      ...

2003/05/13

行列積のスカラー積の演算回数を求めるダイナミックプログラミングのソースで、 大域変数mem[]の大きさを間違えていたと思います。正しくはN+1です。
int mem[N][N];
int mem[N+1][N+1];

2003/05/06

プログラム knapsack_dp1(), knapsack_dp2() の関数の始めの変数宣言部。
コンパイラ処理系によって問題が生じるので、その場合は解決策1、解決策2の いずれかを使用してください。
授業 解決策1 解決策2
void knapsack_dp1(int wl){
  int v[wl + 1];
  ...
#define BIGENOUGH 10000
void knapsack_dp1(int wl){
  int v[BIGENOUGH];
  ...
#include 
void knapsack_dp1(int wl){
  int *v;
  if ((v = (int *)calloc(wl, sizeof(wl))) == NULL)
    return ; /* Error */
  ...


<kameda@image.esys.tsukuba.ac.jp>