• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数の表現が?)

関数の表現が?

このQ&Aのポイント
  • 関数の表現方法についての質問です。
  • 与えられた条件に基づいて、関数を具体的に表現したいです。
  • 数学の得意な方にアドバイスをいただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KI401
  • ベストアンサー率53% (44/82)
回答No.3

f(i,j)は、「深さ」がjである完全二分木を左から走査していったときの、i番目のノードの「深さ」を表す。 と、そういうことだと見たが、あっているだろうか? まぁモノが完全二分木なので、質問者さんの考えているモノが必ずしもTreeだとは限らんとは思うが。 他の回答者さん達も指摘しているように、質問は具体的に頼む。 jが4までの「具体例」だけ挙げられてもこっちは仮説しか立てれないのでどうしょーもない。 で、上の「仮説」で進めてみる。 要するに、 ・i=j=1のとき (当然、j=1ならばiは1でしかあり得ない)   f(1,1)=1 ・1≦i<2^(j-1)のとき   f(i,j)=f(i,j-1)+1 ・2^(j-1)≦i<2^jのとき   f(i,j)=f(i-2^(j-2),j-1)+1 と言う風にこの関数は再帰的に定義することができる。 それとも、そういう関数をもっと楽に「数式」で表したいのだろうか。iとjの式で? 一応それもできなくはないと思うが、、、λとかδとか強引に使えば、だがね。 あるいは、プログラム的な話なら、上の定義通りに完全二分木を実際に走査するような関数を組めばいい。

tach_ei
質問者

補足

KI401さん、ご指摘の通りです。 たとえば、深さ4までの場合、任意の数字の深さを求める式を見つけたいのですが、数字の並び方は下記の方法を指定しているのですが、・・・ 1____2____3____4 _______________5 __________6____7 _______________8 _____9___10___11 ______________12 _________13___14 ______________15

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • arrysthmia
  • ベストアンサー率38% (442/1154)
回答No.5

(i,j) の 26 点で、所与の値をとる関数をひとつ構成したいのなら、 i について m 次、j について n 次の多項式で (m+1)(n+1) ≧ 26 であるようなものの中から探せばよい。 (i,j) を代入して、連立一次方程式を解けば、各係数が決まります。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

「深さ k の完全二分木」と「高さ k の完全二分木」って, どっちが普通の表現なんだろう. さておき, 「表現する」だけなら #3 のように帰納的に定義すれば OK だよなぁ. 閉じた式には.... できるのかもしれないけど考えたくはない.

全文を見る
すると、全ての回答が全文表示されます。
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

関数の計算結果だけでなく、計算のルールを教えてください。 EXCEL関数でいうINT,MOD,LOG当たりの組み合わせになりそうですが、 ルールがつかめません。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

一般的な i, j に対する値がわからないので, 表現することは不可能です. 例えば, これだけ見ても f(972, 10) がいくつになるかわからないでしょ?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 私にはわからない関数のお礼

    先週私にはわからない関数で、投稿させていただきました。 おかげさまで何とかお力をかりて、解決することができました。 syouzi08様、178tall様、paperchicken様、Mr.Holland様、本当にありがとうございました。再度お礼を申し上げたくて投稿いたしました。 アルゴリズムを考えるのは本当に難しいですね。数学の力がないと難しいアルゴリズムを考えるのは不可能みたいです。現在49以下で以下のようになるアルゴリズムを考えております。 9→5,4 10→5,5 11→6,5 12→6,6 13→7,6 14→7,7 15→8,7 16→8,8 17→6,6,5 18→6,6,6 19→7,6,6 20→7,7,6 21→7,7,7 22→8,7,7 23→8,8,7 24→8,8,8 25→7,6,6 26→7,7,6,6 27→7,7,7,6 28→7,7,7,7 29→8,7,7,7 30→8,8,7,7 31→8,8,8,7 32→8,8,8,8 33→7,7,7,6,6 34→7,7,7,7,6 35→7,7,7,7,7 36→8,7,7,7,7 37→8,8,7,7,7 38→8,8,8,7,7 39→8,8,8,8,7 40→8,8,8,8,8 41→7,7,7,7,7,6 42→7,7,7,7,7,7 43→8,7,7,7,7,7 44→8,8,7,7,7,7 45→8,8,8,7,7,7 46→8,8,8,8,7,7 47→8,8,8,8,8,7 48→8,8,8,8,8,8 49→7,7,7,7,7,7,7 49までの数字を8,7,6に上の規則で分けていったときの8、7、6の個数を求めるものです。18以下になると5も入ってくるので18以下では規則が崩れてしまって、無理なような気がしますが。 49以上の数字では、ご指導いただいたとおり、以下の式で求まられました。 A=(n-49)/8の商の整数部分 B=n/8のあまり 8の個数=A+B-1 7個の数=8-B 6が混ざってくるとどうなるか、お分かりになる方よろしくお願いいたします。

  • 関数に付いて

    エクセルで縦に数字(整数)がU1~U200まで入力されていますここでU201に30以上100以下がいくつあるか集計したいんですが関数を教えてください

  • 2次元配列を引数とする関数について

    2次元配列を引数とする関数について 私は今、2次元配列を引数とする関数の表を作るという課題に取り組んでいます。 条件として、int a[数字][数字]={{1,2,3...}}という配列の宣言と同時の初期化は使わず、 関数内で表の値を代入し、値を表示する関数を作り、事実上二つの関数を作るというものです。 私は以下のようなプログラムを作り、動かしましたが、[数字][数字]=********のような本来 あるべき実行結果とは異なる数字の羅列が出てきてしまいました。 ↓ #include <stdio.h> void func(int a[][6]); void fund(int b[4][6]); void main(void) { int a[4][6]; fund(a); func(a); } void func(int a[][6]) { int i,j,b[4][6]; fund(b); for(i=0;i<4;i++)        { for(j=0;j<6;j++) { printf("a[%d][%d]=%d\n",i,j,a[i][j]); printf("\n"); } } } void fund(int b[4][6]) { int i,j; for(i=0;i<4;i++) { for(j=0;j<6;j++)          { scanf("b[%d]*[%d]=%d\n",&i,j,b[i][j]); } } } 本来の実行結果 1 2 3 4 5 6 2 4 6 8 10 12 3 6 9 12 15 18 4 8 12 16 20 24 紙にも書いて何回も見直しましたが、どこがおかしいのかわかりませんでした。 どうすれば良いのでしょうか? 何か良いアドバイスをよろしくお願いします。

  • 複数の関数からなる関数

    教えてください。 化学系卒なので数学の知識は深くありません。 [A]と[B]からなる[C]という要素があったとします。 [A]は、[A]を構成する「x」により、A=f(x)で表されるとします。 同じく [B]も、[B]を構成する「y」により、B=g(y)で表されるとします。 さて、ここで[C]ですが [C]は[A]と[B]より表現できる(はず)ので、 「C=h(f(x),g(y))」の形で表したいのですが、やり方、手順等々がわかりません。 C=h(f(x),g(y)) と抽象的?に書くのではなくて、 具体的中身のある関数形で表現できるようにしたいです。 f(x)とg(y)が互いに独立であれば、【 C=a*f(x)+b*g(y)+c 】でよいかと思いますが 「a」と「b」の数値の出し方がわかりません。 [a*f(x)]*[b*g(y)]や、[a*f(x)]^[b*g(y)],[a*f(x)]*e^[b*g(y)]だったりすると もうお手上げ状態です。 これら複数の関数がどう位置づけられるか、 このようなことを得意とするツールがあればご教授ください。 (フリーであればなお助かります。) また、上記のf(x)やg(x)を出すのに、エクセルの近似式を使っていますが 限界を感じています。 カーブフィッティングや近似式を計算してくれるツール等があれば 併せてご教授くださいますようお願いいたします。 以上、よろしくお願いいたします。3

  • Excelのカウント関数の応用で教えてください。

    A   B   C   D   E    F   G   H     I   J 10   3   0   4   11   9    8    6     5 エクセルの表でAからHまで数値が入っています。 そして、Iに目標数がはいっています。 Jに関数を入れてカウントしたいのです。 JにはAからHでIより小さい数字で、なおO以上のものをカウントした数を入れたいのです。 ですので今回の場合は『2』となるように。 COUNTIFですと、検索条件に数値を指定しなくてはいけなく。何行もあるので、条件には『>I1』としたいのです。 何か質問に足りないところがありましたら、補足いたしますので、お願いいたします。

  • 関数について教えて下さい。

    こんばんわ! 先程、質問させて頂いて、うまくいったのですが、数字を変えるとうまく行きませんので教えて頂けませんか? http://oshiete1.goo.ne.jp/qa5629494.html 「A1」期間を入れます。 「I3:J200」に表1があります。 「I列」期間・「J列」補数となってます。 「A7」に補数を、表1を参照し、関数を使用して 自動で入れたいです。 *「I4」の数字を22→22.5に変更しました。 (例) 「A1」に22を入れます。 表1「I列」に22が無いので、 「A7」にそれより大きい22.5の横「J列」の2.6を入れたいです。 ですが、「A7」に2.6を入れたいのですが、24.5が入ってしまいます。 「A7」=VLOOKUP(ROUNDUP(A2,0),I3:J200,2,1)が入ってます。 色々やってますが、うまくいきません。 教えて頂けないでしょうか? よろしくお願いします。

  • Excelの関数(COUNTIF?)

    A列には1~3000の数字が入っています。 このうち、150以下、150~200、200以上のセルがいくつあるのかカウントするには、どのような関数を使えば良いのでしょうか。 COUNTIFを使うと思うのですが、検索条件にどう表現するのか分からず困っています。

  • 2次関数の問題です。

    A~J までは 0から(9)までの数字か,-符号が入ります。 ---------------------------------------------------- x の2次関数 y = a x^2 + bx + c (i)  を考える。 関数 (i) のグラフは (-1, -1) ,(2, 2) を通るものとする。 (1) b,c を a の式で表すと  b = [A] - a, c = [B C] a となる。 (2)関数 (i)のグラフと x 軸の交点のうち 1つは,0 < x =< 1 の範囲内にあるとする,このとき a の値の範囲は,               [D] < a = < [E] / [F] (ii) である。 (3) a の値が (ii) の範囲内を変化するとき, a + b c の値の範囲は [GH] / [I] =< a + bc =< [J] である。   ------------------------------------------------------------------------------- (1) (-1, -1), (2, 2)を通ることから a - b + c = -1 4a + 2b + c = 2 これを解くと,b = 1 - a , c = -2a がでます。 (2) y = f(x) とおいて,    f(0)×f(1) < 0 などと考えてみたのですが,うまくいきません。 (3) は (2)の範囲で, a+ bc = a + (1 - a)(-2a) の値の範囲を求めれば良いのではないかと思っています。 ------------------------------------------------------------------ 教えてください。

  • 整数の表現について

    もし、数字が整数だった場合はこのA処理を もし、数字が小数点を含む数字だった場合はB処理をというようなIF文を作りたいのですが”整数” ”小数点” をどのように表現するのか解りません。 どうか教えて頂けないでしょうか。 又、違う表現等があった場合もあるのでしょうかお願します。

  • エクセルの関数式について教えてください。お願いします。

    エクセルの関数式について教えてください。お願いします。   A B C D E F G H I J 1 9 6 1 3 4 7 8 2 5 10 2 6 4 9 3 8 7 1 5 10 2 3 1 3 -2 0 2 0 -4 1 1 -2 たとえばこのような表があります。 1の行にはランダムに1から10までの数字が入ります。 2の行にもランダムに1から10までの数字が入ります。 B1に6が入っています、A2にも同じ数字の6が入っています、 6はB1からA2に1つ上がっているので1 A1には9が入っています、C2にも9が入っています。 9はA1からC2に2つ下がっているので-2 D1には3が入っています、D2にも3が入っています。 3はD1からD2動いていないので0 といった具合に、1の行に入った数字が2の行の同じ数字を感知して その数字がどれだけ上がったのか、下がったのかを 3の行に表したいのですが、どのような関数を使ったらよいのでしょうか? 教えてください。お願いします。