void KeyExpansion(unsigned char key[N_KEYS], unsigned int* w)
{
unsigned int temp;
for(int i=0; i< N_KEYS; i++)
{
w[i] = (key[N_KEYS*i]<<24) + (key[N_KEYS*i+1]<<16) + (key[N_KEYS*i+2]<<8) + key[N_KEYS*i+3];
}
for(int i = 4; i< EXPANDED_KEY_COUNT; i++)
{
temp = w[i-1];
if(i % 4 == 0)
temp = SubWord(RotWord(temp))^Rcon[i/4];
w[i] = temp^w[i-4] ;
}
}
答えて
Big-Oは入力に基づいて分析を行います。あなたの質問の問題は、お互いに関係するかもしれないし、関係しないかもしれないいくつかの入力があるようです。
入力変数は、N_KEYS
,EXPANDED_KEY_COUNT
のようになります。また、提供されている内容に基づいてSubWord()
またはRotWord()
が何を行うかもわかりません。
SubWord()
とRotWord()
は提供されていないため、簡単な計算のために定数であると仮定します。
基本ループがあり、各値を繰り返し処理するので、かなり簡単です。つまり、O(N_KEYS) + O(EXPANDED_KEY_COUNT)
があることを意味します。したがって、全体的な時間の複雑さは2つの入力に依存し、より大きなものに拘束されます。
SubWord()
またはRotWord()
は、一定時間でないものがあれば、O(EXPANDED_KEY_COUNT)
部分のコードに影響します。時間の複雑さを乗算して調整することができます。しかし、メソッドの名前によって、時間の複雑さは文字列の長さに基づいているように聞こえますが、さらに別の入力変数になります。
質問が完全にはっきりしていないので、これは明確な答えではありませんが、私は可能な限りあなたのために物事を分解しようとしました。
VenomFangs、本当にありがとうございます。主にそのアルゴリズムの一部だけです。現在、私は暗号アルゴリズムの1つを強化しています。だから、私は複雑さを正当化するために審査官からコメントを得ました。これは、「既存の構造の追加コンポーネントがアルゴリズムの複雑さを増やし、元のアルゴリズムの制約に関連して追加のコンポーネントの専門性を正当化する可能性がある」というコメントですので、アルゴリズムの複雑さを意味するものは本当に混乱しています。時間の複雑さの程度かどうか? –
あなたの変更が暗号化を壊すためのセキュリティ時間を改善しない限り、無益に計算を増やすので、オリジナルからの余分な作業は起こりそうにないでしょう。彼らはあなたの変更のより深い目的を求めています。 –
- 1. 上記のコードの時間複雑さをどのように見つけることができますか
- 2. 以下のプログラムの時間の複雑さはどのように計算するのですか:
- 3. 事前計算はどのように複雑な表記法で処理されますか?
- 4. 誰でも下記のコードを説明できますか?
- 5. vue.js 2で計算したものをどのように実行できますか?このような
- 6. どのようなボディでもこのループを手助けできますか?
- 7. これはどのようにjavascriptで2になるのですか誰でも説明できますか?
- 8. 誰でもどのようにユニバーサルソフトウェアアップデートチェッカーを作ることができるのか説明できますか?
- 9. 誰もこのコードが1から10をどのように印刷するか説明できますか?
- 10. スキーム - このような出力をどのように説明しますか?
- 11. Pythonでどのように変数を引用できますか?説明私の問題のため、ここではコードとエラーがどのように
- 12. は、私は以下のように説明することがいくつかのコードを書きましたが、どのように私は2つのファイル
- 13. 以下の関数の時間複雑度を計算するにはどうすればよいですか?
- 14. 以下のClojureコードの重複をどのように減らすことができますか?
- 15. コードの出力は3です。どのように説明することができますか?
- 16. EJB3メソッドのハッシュはどこでどのように計算されますか?
- 17. この複雑なActiveRecordクエリをどのように構築できますか?
- 18. 誰かがどのようにこの作品を説明できますか?
- 19. BigO表記の計算
- 20. この複雑なリストにどのように入力できますか?
- 21. このコードはpiを高精度でどのように計算しますか?ここで
- 22. 次のコードがどのように機能するかを説明することができますか?
- 23. 誰でもこの機能がどのように機能するのか説明できますか?
- 24. このケースの複雑さをどのように減らすことができますか?
- 25. シンプルなブール方法をどのようにコードするのですか? (以下のコードの記述方法を思い出すことはできません)
- 26. どのようにCSSを使って以下のような行を描くことができますか?
- 27. どのように計算することができますか
- 28. 角度フィルタ処理がこのコードでどのように機能するか説明できますか?
- 29. この関数の時間複雑度はどのように計算されますか?
- 30. kはどのように0ですか?以下のコードで
'N_KEYS'が変更された場合の縮尺を知りたいと思いますか? 'SubWord'や' RotWord'は何でもすばらしいですか?これが線形であってはならない理由はありますか? – nvoigt